10-24-2018 11:20 AM - edited 10-24-2018 11:33 AM
I am working on a design on Zynq 7 series FPGA. We are using some divider and IFFT Logic-core blocks.
Earlier version of the IP used an Active high reset. Newer versions use Active low reset.
I am adding an inverter in my wrapper file to invert the reset gotten by the Logic Core IP block. But in Post implementation simulation - the behavior of the reset signal on both sides around this inverter is wierd. It is showing aresetn as the port of my wrapper - although aresetn is the port of IP block while areset is the port of my wrapper. Also, it shows that aresetn stays low during run - which probably means reset stays asserted.
How am I supposed to invert this reset signal polarity correctly ?
Thanks and sincerely
10-28-2018 07:03 PM
10-24-2018 01:08 PM
do you mind posting were it says the reset polarity has changed please
10-25-2018 08:41 AM
10-25-2018 01:14 PM - edited 10-25-2018 01:16 PM
Thanks for that,
I'd forgotten that resets used to be active high, and in the 'new' AXI land they are active low,
I'll have to keep an eye out for that , at least its documented.
As for the original question,
it should work just providing a reset externally of the correct polarity,
can you share a code snippet please?
Also , be aware, that signals get re named , and unless you have the keep attribute or equivalent, signals can be combined post place / route to make more efficient code by the tools.
10-25-2018 02:01 PM
The below is from my wrapper -
// Among the ports
// In the module body
always @ (posedge aclk)
aresetn <= #0.1 ~areset;
//Instantiation of the LogicCore block
.aclk(aclk), // input wire aclk
.aresetn(aresetn), // input wire aresetn
... and so on
10-25-2018 03:57 PM
Your syncronising the async reset to the clock ,
do you need to do this ?
assign aresetn = ~areset;
10-25-2018 04:20 PM - edited 10-25-2018 04:52 PM
I did the same first.
It didnt work either, the original problem statement in first post of the thread is from combinational inversion.
It was exactly what you have written. The inverter was not showing.
Then I tried .arestn (!areset) in the instantiation - without specifying invertor/inversion separately.
Then I put a flop. It is still not working. The module simulation is showing input lines stay at z although 2 of them are tied to 1 in RTL.
10-26-2018 01:46 AM
well, assuming the inverter has not been absorbed,
and you are driving it correct,
then sounds to me like your best bet is to take a step back and try a much simpler example ,
10-28-2018 07:03 PM
10-30-2018 10:42 AM
@hayk.petr- Thanks. The reset is getting inverted - and schematic matched verilog code. But for some reason, in some modules there is a 5-6 cycles delay b/w areset switching and aresetn switching in the post place and route simulation. I am still looking into it. Thanks.