simulatable but not synthesizable (verifiable)

Jul 27, 2005 3 Replies

Dear



I am synthesizing and mapping following examples (counters) into Vertex II pro with ISE6.3. Both of them are working okay in Modelsim.



And I wish to verify them after mapping using Chipscope Pro - Inserter and Analyzer.



Version 1 is okay.



Version 2 is a version, which has "rst" input signal. Problem is that version 2 not okay in ChipScope Pro, saying that " INFO - Device 2 Unit



0: Waiting for core to be armed ".

Both of them are error-free and warning-free during mapping process. What is the problem in version 2? Is it really a problem? How can we verify the version 2?



Thankyou again :) Regards


----- Version 1 ---------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity top is port ( clk : in std_logic := '0'; cnt : out std_logic_vector(3 downto 0) ); end top;



architecture behave of top is signal counter : std_logic_vector(31 downto 0):= (others => '0'); begin process(clk) begin if ( clk'event and clk = '1' ) then counter


I don't understand this because I don't know about ChipScope Pro, but I do understand why your VHDL is wrong.

rst_tmp is required to reset the counter on both rising and falling edges of the clock. This is clearly inappropriate for any real devices.

This is strange - the synthesis tool should reject it, or at least issue a warning for the incorrect coding style.

If you want the reset to be synchronous, put it into the clocked-logic part of the process so that it is tested synchronously:

process(clk) begin if ( clk'event and clk = '1' ) then if rst_tmp = '1' then counter '0'); else counter

Jonathan Bromley schrieb:

It is an asynchronous reset. I think he should have rst_tmp in the sensitivity list.

cheers Gunther

Yes, I missed it. Reset signal "rst_tmp" should be within sensitivity list. Below is the correct one.

BTW, my goal is to "verify" its functionality (of the "internal" 32 bit counter) in a real FPGA chip.

In version 1, I am able to "see" the behavior of internal signals in waveform (exactly same as simulation), using "Inserter" and "Analyzer" in ChipScope Pro. The difference between version 1 and 2 is the 'rst' input signal. In version 2, however, no waveform can be seen in "Analyzer". That was a problem :)

If someone has idea how to set up ChipScope Pro environment for this case, let me know.

Thankyou so much. Regards

------- Version 2 ------------------------------=AD----- library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity top is port ( clk : in std_logic; rst : in std_logic ; -- additional 'rst' input cnt : out std_logic_vector(3 downto 0) ); end top;

architecture behave of top is signal counter : std_logic_vector(31 downto 0):=3D (others =3D> '0'); signal rst_tmp: std_logic :=3D '0'; -- initialization begin rst_tmp

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required