![]() |
|
![]() |
|
Answers Database
A1.4 and Modelsim: How to use the OSC4 component with VHDL simulation (Functional and Timing)
Record #3767
Product Family: Software # ** Failure: *** Error: a positive value of PERIOD_8M must be specified *** # Time: 0 ns Iteration: 0 Region: /testbench/osc4_instance/internal_osc4 This solution record describes the configuration statement that can be used in a VHDL testbench to properly specify the PERIOD of the OSC4 for designs using the internal oscillator. Solution 1: Functional (UNISIM) Simulation ------------------------------ For a UNISIM OSC4 initialization, add the follwing configuration statement to your testbench or a seperate file in which you compile after compiling your testbench: CONFIGURATION RTL_simulation OF <entity_name_of-testbench> IS FOR <architecture_name_of_testbench> FOR <testbench_instance_name_for_design>:<entity_name_of_design> FOR <architecture_name_of_design> FOR <instance_name_of_osc4>: osc4 USE ENTITY UNISIM.OSC4(OSC4_V) Generic map (PERIOD_8M => 125 ns -- 8 MHz -- ,SEL_F500K => TRUE -- 500 KHz -- ,SEL_F16K => TRUE -- 16 KHz -- ,SEL_F490 => TRUE -- 490 Hz -- ,SEL_F15 => TRUE -- 15 Hz ); END FOR; END FOR; END FOR; END FOR; END RTL_simulation; In the above example: 1. Add to the end of the testbench or in a seperate file that will be compiled with the testbench. 2. Replace all names in <> with names from design code and testbench. Insatnce names above refers to the instance names given to the instantited design in the testbench and instantiated OSC4 component in the code. 3. Un-comment the lines in the example configuration statement corresponing to the connected frequecies in the design. Always keep the 8 MHz (PERIOD_8M) line regardless of whether it is connected in the design. 4. After successfully compiling the testbench and code, invoke simulation using the configuration name now: vsim RTL_simulation Solution 2: Timing (SIMPRIM) Simulation =========================== For a Post-M1 created netlist such as that used for timing simulation, the procedure is very similar however the configuration statement may need to be slightly modified. As with the proceedure for the UNISIM simulation, the taps (500 KHz, 16 KHz, etc.) being used should be uncommented. CONFIGURATION Post_M1_simulation OF <entity_name_of-testbench> IS FOR <architecture_name_of_testbench> FOR <testbench_instance_name_for_design>:<entity_name_of_design> FOR STRUCTURE FOR <instance_name_of_osc>: osc4 USE ENTITY WORK.OSC4(STRUCTURE) Generic map (PERIOD_8M => 125 ns -- 8 MHz -- ,SEL_F500K => TRUE -- 500 KHz -- ,SEL_F16K => TRUE -- 16 KHz -- ,SEL_F490 => TRUE -- 490 Hz -- ,SEL_F15 => TRUE -- 15 Hz ); END FOR; END FOR; END FOR; END FOR; END Post_M1_simulation; The reason for these modifications is that the architecture for the VHDL netlist produced by M1 is always STRUCTURE. If this does not match the architecture of the original design, this must be changed. Also, the simulation model for the OSC4 in now written in the design netlist rather than existing in the UNISIM library. For this reason, the refernced library is now WORK rather than UNISIM. End of Record #3767 - Last Modified: 10/13/99 08:15 |
| For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips! |