P
pallav
Guest
I'm observing a strange netlist simulation problem. I can't seem to
locate the source of the problem so I'm looking for some ideas.
The verilog code is posted here: http://www.pastey.net/125273
It is basically the fetch stage which computes the PC address for
fetching instructions. At reset, the PC should be set to BFC00000. The
RTL code simulates fine. I synthesize it using DC Compiler.
I try simulating the netlist with my testbench. Here is the simulation
waveform: http://imagebin.ca/view/zd3qw0th.html
I'm using a synchronous active-high reset for all my blocks. When
reset is high, PC should get set to BFC00000. All of the bits get set
except pcF[2] which stays at X. I don't understand why this is
happening. I've examined the RTL code and it looks OK to me.
Looking at the synthesis report, there are no latches in the design
and pcF is correctly inferred as a flip-flop:
Inferred memory devices in process
in routine fetchU line 650 in file
'/home/pgupta/cad/mips32/src/mips32.v'.
===============================================================================
| Register Name | Type | Width | Bus | MB | AR | AS | SR |
SS | ST |
===============================================================================
| pcF_reg | Flip-flop | 9 | Y | N | N | N | N |
Y | N |
| pcF_reg | Flip-flop | 23 | Y | N | N | N | Y |
N | N |
===============================================================================
I've flattened the entire hierarchy for synthesis but I don't see how
that should affect pcF[2]. Does any body have any ideas what could be
wrong or things I can test out?
Thanks.
Kind regards.
locate the source of the problem so I'm looking for some ideas.
The verilog code is posted here: http://www.pastey.net/125273
It is basically the fetch stage which computes the PC address for
fetching instructions. At reset, the PC should be set to BFC00000. The
RTL code simulates fine. I synthesize it using DC Compiler.
I try simulating the netlist with my testbench. Here is the simulation
waveform: http://imagebin.ca/view/zd3qw0th.html
I'm using a synchronous active-high reset for all my blocks. When
reset is high, PC should get set to BFC00000. All of the bits get set
except pcF[2] which stays at X. I don't understand why this is
happening. I've examined the RTL code and it looks OK to me.
Looking at the synthesis report, there are no latches in the design
and pcF is correctly inferred as a flip-flop:
Inferred memory devices in process
in routine fetchU line 650 in file
'/home/pgupta/cad/mips32/src/mips32.v'.
===============================================================================
| Register Name | Type | Width | Bus | MB | AR | AS | SR |
SS | ST |
===============================================================================
| pcF_reg | Flip-flop | 9 | Y | N | N | N | N |
Y | N |
| pcF_reg | Flip-flop | 23 | Y | N | N | N | Y |
N | N |
===============================================================================
I've flattened the entire hierarchy for synthesis but I don't see how
that should affect pcF[2]. Does any body have any ideas what could be
wrong or things I can test out?
Thanks.
Kind regards.