10-29-2012 01:17 PM
I tried to import Verilog code by instantiation followed by the instruction in http://digital.ni.com/public.nsf/allkb/7269557B205B1E1A86257640000910D3,
but still I can see some errors while compiling the VI file.
Simple test Verilog file is as follows:
==============================
module andtwobits (xx, yy, zz);
input xx, yy;
output reg zz;
always @(xx,yy) begin
zz <= xx & yy;
end
endmodule
==============================
and after following up the above link, we created the instantiation file as
==============================================
library ieee;
use ieee.std_logic_1164.all;
entity mainVHDL is
port(
xxin: in std_logic;
yyin: in std_logic;
zzout: out std_logic
);
end mainVHDL;
architecture mainVHDL1 of mainVHDL is
COMPONENT andtwobits PORT (
zz : out std_logic;
xx : in std_logic;
yy : in std_logic);
END COMPONENT;
begin
alu : andtwobits port map(
zz => zzout,
xx => xxin,
yy => yyin);
end mainVHDL1;
==============================================
Sometimes, we observe the following error when we put the indicator on the output port,
ERROR:ConstraintSystem:58 - Constraint <INST "*ChinchLvFpgaIrq*bIpIrq_ms*" TNM =
TNM_ChinchIrq_IpIrq_ms;> [Puma20Top.ucf(890)]: INST
"*ChinchLvFpgaIrq*bIpIrq_ms*" does not match any design objects.
ERROR:ConstraintSystem:58 - Constraint <INST "*ChinchLvFpgaIrq*bIpIrq*" TNM =
TNM_ChinchIrq_IpIrq;> [Puma20Top.ucf(891)]: INST "*ChinchLvFpgaIrq*bIpIrq*"
does not match any design objects.
and interestingly, if we remove the indicator from the output port, it sucessfully compiles on the LabVIEW FPGA.
Could you take a look at and please help me to import Verilog to LabVIEW FPGA?
I've followed the basic steps of instantiation on the above link, but still it won't work.
Please find the attachment for the all files.
- andtwobits.v : original Verilog file
- andtwobits.ngc: NGC file
- andtwobits.vhd: VHD file after post-translate simulation model
- mainVHDL.vhd: instantiation main file
Since there is no example file for Verilog (there is VHDL file, but not for Verilog), it is a bit hard to do the simple execution on LabVIEW FPGA even for the examples.
Thank you very much for your support, and I'm looking forward to seeing your any help/reply as soon as possible.
Bests,
Solved! Go to Solution.
10-30-2012 06:06 PM
Hi softmind,
You say that this error occurs just sometimes when the indicator is hooked up to the output port? So does it work some other times?
If so, what kind of environmental differences are there when it works versus not working?
What version of LabVIEW, LabVIEW FPGA, and Xilinx ISE are you using? We have had errors in the past where older versions of some of this software cause similar errors.
10-30-2012 08:34 PM
Hi Wee-Bey,
You can check the attached files for the better understanding.
When there are only controls in the VI (input ToCLIP), it does not give any error, but once I put the indicator in the VI (output FromCLIP), it will show the error.
I think that it does not execute or include the Verilog properly when there is no indicator (CLIP output), so it is the reason why it does not show any error, but once I put the output, then LabVIEW should execute the CLIP, so it may give errors.
I tested two kinds of versions,
- LabVIEW 2011 with Xilinx ISE 12.4 (I used the one in the NIFPGA folder (installed when I install Xilinx Tools)
- LabVIEW 2012 with Xilinx ISE 13.4 (from NIFPGA)
So, I don't think it was not the problem of older versions
10-31-2012 04:37 PM
softmind,
You might be right about the CLIP not executing until there is an indicator there.
The KnowledgeBase you referred to states in Step 2 that you cannot use the latest versions of ISE (11.1 or later) to build the wrapper.
The following links lead to ISE 10.1 for LabVIEW 2012 and 2011, which you can use to adhere to those guidelines.
LabVIEW 2012 FPGA Module Xilinx Tools 10.1
LabVIEW 2011 FPGA Module Xilinx Tools 10.1
11-13-2012 09:32 AM
Thank you very much for your suggestion.
Based on your recommendation, we installed Xilinx Tools 10.1 version, and tested the same thing using that ISE.
But, the problem is not resolved even though we used the lower version of Xilinx Tool.
I can find the example to import VHDL codes into CLIP from the following link:
http://www.ni.com/white-paper/7444/en
and I'm very pleased if you and/or NI people can give any kind of very simple example code to import VERILOG into CLIP.
Since there is no specific example to import VERILOG code,
I guess that the example is worthwhile as a benchmark for the customers
because the customer can test their own environments using test code and figure out the problems and solutions by themselves.
Please help me for the verilog instantiation part, and if it is hard to make, and please recycle the example I uploaded to the forum and give some idea what parts should be polished for the Verilog Import.
I'm really looking forward to getting any help.
Thank you very much for all supports from NI.
11-13-2012 12:58 PM
The best instructions that we have for integrating Verilog IP into LabVIEW FPGA can be found here: Using Verilog Modules in a Component-Level Design. My suspicion is that you didn't uncheck the "Add I/O Buffers" option in the Xilinx Specific Options setting in ISE when running XST (see page 8 of the .pdf)
11-13-2012 02:59 PM
Dear T-REX$
Thank you very much for offering the example.
I guessthat it will really help me.
I will return back after testing the example codes in my setup.
Bests,
11-16-2012 01:02 PM
Thank you very much, the example codes worked very well. Based on this code, I will practice how to import our own codes.
11-29-2012 01:14 AM
Hi,
I am facing problem in creating successfully importing VHDL wrapper file for a Verilog module,into LabVIEW FPGA using CLIP Node method. Please note that:
Query1. Which versions of Xilinx ISE (to be installed in PC for generating .ngc file) are compatible with Labview 2011.1(with Xilinx 12.4 Compiler tools)? Can any version be used up to 12.4?
///////////////// Verilog code of “simple_and.v”//////////////////////
////////////////////////////////////////////
module simple_and(in1, in2, out1);
input in1,in2;
output reg out1;
always@( in1 or in2)
begin
out1 <= in1 & in2;
end
endmodule
////////////////////////////////////////////
/////////////////VHDL Wrapper file code of “SimpleAnd_Wrapper.vhd” //////////////////////
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY SimpleAnd_Wrapper IS
port (
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic
);
END SimpleAnd_Wrapper;
ARCHITECTURE RTL of SimpleAnd_Wrapper IS
component simple_and
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic
);
end component;
BEGIN
simple_and_instant: simple_and
port map(
in1 => in1,
in2 => in2,
out1 => out1
);
END RTL;
////////////////////////////////////////////////
Documents/tutorials followed for generating VHDL Wrapper file for Verilog core are:
Query2. Do I hv to name tht “v” file into “simple_and.vhd”?? Anyways it did not work both ways i.e. naming it as “simple_and with a “v” or “vhd” extension. In end I copied that “simple_and.v” post translate model file, “simple_and.ngc”, and VHDL Wrapper file “SimpleAnd_Wrapper.vhd” in the respective labview project directory.
Query3. The post-translate model file can also be generated by implementing verilog simple_and.v file, so why have to generate it by making a separate netlist project using “simple_and.ngc” file? Is there any difference between these two files simple_and_translate.v generated through separate approaches as I mentioned?
2. NI tutorial “Using Verilog Modules in a Component-Level IP Design”. Link is https://decibel.ni.com/content/docs/DOC-8218.
Query4. What is the difference between this method and the above one?
2. I followed tutorial “Importing External IP into LABVIEW FPGA” for rest steps of creating a CLIP, declaring it and passing data between CLIP and FPGA VI. Link is http://www.ni.com/white-paper/7444/en. This VI executes perfectly on FPGA for the example”simple_and.vhd” file being provided in this tutorial.
Compilation Errors Warnings received after compiling my SimpleAnd_Wrapper.vhd file
WARNING:HDLCompiler:89"\NIFPGA\jobs\WcD1f16_fqu2nOv\SimpleAnd_Wrapper.vhd" Line 35: <simple_and> remains a black-box since it has no binding entity.
2. WARNING:NgdBuild:604 - logical block 'window/theCLIPs/Component_ dash_Level _IP_ CLIP0/simple_and_instant' with type 'simple_and' could not be resolved. A pin name misspelling can cause this, a missing edif or ngc file, case mismatch between the block name and the edif or ngc file name, or the misspelling of a type name. Symbol 'simple_and' is not supported in target 'spartan6'.
3. ERROR:MapLib:979 - LUT6 symbol "window/theVI/Component_dash_Level_IP_bksl_out1_ind_2/PlainIndicator.PlainInd icator/cQ_0_rstpot" (output signal=window/theVI/ Component_dash_Level _IP_bksl_out1_ ind_2/PlainIndicator.PlainIndicator/cQ_0_rstpot) has input signal "window/internal_Component_dash_Level_IP_out1" which will be trimmed. SeeSection 5 of the Map Report File for details about why the input signal willbecome undriven.
Query5. Where lays that “section5” of map report? It maybe a ridiculous question, but sorry I really can’t find it; maybe it lays in xilnx log file!
4. ERROR:MapLib:978 - LUT6 symbol "window/theVI/Component_dash_Level_IP_bksl_ out1_ind_2/PlainIndicator.PlainIndicator/cQ_0_rstpot" (output signal= window / theVI/Component_dash_Level_IP_bksl_out1_ind_2/PlainIndicator.PlainIndicator/ cQ_0_rstpot) has an equation that uses input pin I5, which no longer has a connected signal. Please ensure that all the pins used in the equation for this LUT have signals that are not trimmed (see Section 5 of the Map Report File for details on which signals were trimmed). Error found in mapping process, exiting.Errors found during the mapping phase. Please see map report file for more details. Output files will not be written.
Seeing these errors I have reached the following conclusions.
Query6. Is there any step I maybe missing while making this VHDL wrapper file; in my opinion I have tried every possibility in docs/help available in NI forums?
2. Query7. Maybe it is a pure Xilinx issue i.e. some sort of library conflict as verilog module is not binding to top VHDL module as can be seen from warning HDLCompiler89. If this is the case then how to resolve that library conflict? Some hint regarding this expected issue has been given in point 7 of tutorial “How do I Integrate Verilog HDL with LabView FPGA module”. http://digital.ni.com/public.nsf/allkb/7269557B205B1E1A86257640000910D3. But nothing has been said much about resolving that issue.
3. Because of this unidentified black box, the whole design could not be mapped and hence could not be compiled.
P.S.
I have attached labview project zip folder containing simple_translate.v, simple_and_verilog.vi file,SimpleAnd_Wrapper.xml, Xilinx log file after compilation alongwith other files. Kindly analyze and help me out in resolving this basic issue.
Please note that I have made all settings regarding:
Please I need speedy help.Thanking in you in anticipation.
11-29-2012 08:33 AM
Hi Aijaz,
Unfortunately, I don't have any suggestions to help with your immediate issue, but I recommend you post this detailed question in another thread. This thread is marked as solved by the original author, and therefore your post is less likely to be read by engineers who may be able to help. I recommend you create a new thread, and then refer back to this thread with a link if you think it contains relevant information to your new question.
Cheers,