是否可以使用实体实例化在VHDL模块中实例化verilog模块?

是否可以使用实体实例化在VHDL模块中实例化verilog模块?,vhdl,verilog,Vhdl,Verilog,是否可以使用VHDL风格的实体实例化在VHDL设计中包含Verilog模块 我意识到,如果我将Verilog模块视为一个组件并实例化该组件,我就可以实现这一点 谢谢从我的代码集中抓取: module sync_fifo #(parameter WIDTH = 8, // width in bits L2DEPTH = 4, // Log 2 Depth, 4=16 deep REGFLAGS = 1 // Full, empty are

是否可以使用VHDL风格的实体实例化在VHDL设计中包含Verilog模块

我意识到,如果我将Verilog模块视为一个组件并实例化该组件,我就可以实现这一点


谢谢

从我的代码集中抓取:

module sync_fifo
#(parameter WIDTH    = 8, // width in bits
            L2DEPTH  = 4, // Log 2 Depth, 4=16 deep
            REGFLAGS = 1  // Full, empty are registered
)
(
   input                   clk,     // system clock                 
   input                   reset_n, // A-synchronous low reset/clear
   input                   enable,  // clock gating                 
   input                   clear,   // Synchronous clear            

   input                   write,   // write FIFO                   
   input       [WIDTH-1:0] wdata,   // write data                   
   input                   read,    // read FIFO                    
   output      [WIDTH-1:0] rdata,   // read data                    

   output reg              empty,   // FIFO is empty                
   output reg              full,    // FIFO is full                 
   output reg      [L2DEPTH:0] level    // Fill level                   
);

outp_fifo : sync_fifo 
generic map(
   WIDTH   => 10,  -- Byte + user + last
   L2DEPTH => 7,   -- 128 deep
   REGFLAGS=> 1
  )
port map 
(
   clk     => ACLK,                  -- system clock                 
   reset_n => ARESETN,               -- A-synchronous low reset/clear
   enable  => BIT_1 ,                -- clock gating                 
   clear   => BIT_0 ,                -- Synchronous clear            

   write   => package_byte_en,       -- write FIFO                   
   wdata   => outp_fifo_wt_data_and_meta , -- write data                   
   read    => outp_fifo_read   ,     -- read FIFO                    
   rdata   => outp_fifo_rd_data_and_meta ,     -- read data                    
   empty   => outp_fifo_empty,       -- FIFO is empty                
   full    => outp_fifo_full,        -- FIFO is full                 
   level   => open                   -- Fill level      
   );

后期编辑:
你只能通过一个有能力的声明来做到这一点:

COMPONENT sync_fifo IS
  generic(
     WIDTH    : integer := 8;
     L2DEPTH  : integer := 8;
     REGFLAGS : integer := 1
  );
  PORT (
       clk    : in STD_LOGIC;         -- system clock                 
       reset_n: in STD_LOGIC;         -- A-synchronous low reset/clear
       enable : in STD_LOGIC;         -- clock gating                 
       clear  : in STD_LOGIC;         -- Synchronous clear            

       write  : in  STD_LOGIC;        -- write FIFO                   
       wdata  : in  STD_LOGIC_VECTOR(WIDTH-1 downto 0); -- write data                   
       read   : in  STD_LOGIC;        -- read FIFO                    
       rdata  : out STD_LOGIC_VECTOR(WIDTH-1 downto 0); -- read data                    

       empty  : out STD_LOGIC; -- FIFO is empty                
       full   : out STD_LOGIC; -- FIFO is full                 
       level   : out STD_LOGIC_VECTOR(L2DEPTH downto 0)  -- Fill level                   
    );
END COMPONENT;

虽然三年前当被问到这个问题时,答案似乎是“不”,但我在实践中发现答案是“是的,你可以”,但有一些警告。我用Mentor ModelSim和Xilinx Vivado确认了这一点

我不知道LRM是否发生了变化,或者工具供应商是否决定支持它。我使用的是VHDL-2008,所以我怀疑是后者

这是我的一个测试文件中的一个实例。VerFlopX是一个Verilog模块

  VerFlopX8c: entity work.VerFlopX (rtl)
    generic map (SIZE => 8)  --integer:=1
    port map (
      Clk => Clk,                --in  wire
      D   => D16(15 downto 8) ,  --in  wire[(SIZE-1):0]
      Q   => Q16(15 downto 8));  --out wire[(SIZE-1):0]
注意事项:

  • 请注意,指定了体系结构“rtl”。这可以(也可能应该)省略。但它仍然可以工作,这似乎很奇怪,因为Verilog模块没有体系结构
  • 不能将Q输出与open关联。ModelSim将返回一个错误。如果您更改为组件实例化,那么将正式输出连接到open就可以了

好的,您能否提供一个示例代码,说明您是如何将Verilog模块作为一个组件处理并实例化该组件的?你想问一个可以回答的问题,而不是有人提出他们的意见。提供一些代码,并解释您所做的事情以及您遇到的错误。还请阅读以下内容:提及您感兴趣的工具将非常有用。。。某些组件可能不提供与其他组件相同级别的支持。组件声明允许将具有兼容层的对象文件链接(详细说明)到设计模型中,而具有非可选保留字
实体的组件实例化将需要事先分析(编译)模块进入VHDL资源库(IEEE Std 1076-2008 11.7组件实例化)。Verilog模块不是VHDL库单元(13.设计单元及其分析)。设计库是以前分析过的设计单元(13.2设计库,也可参见13.5分析顺序)的实现定义存储设施。请参见评论中的讨论,并给出以下答案:您应该澄清您的问题。我认为这不是他所说的“实体样式声明”的意思。对于显示的代码,仍然需要VHDL中的组件声明。他可能只是指声明
outp\u fifo:entity work.sync\u fifo[…]
。你不能这么做。VHDL是一种直截了当的语言,因此它需要知道连接到什么。^这可能就是他的问题的答案。不是你在回答中写的;)啊,谢谢你的更正。因此,问题应该是:“我可以在不使用组件声明的情况下在VHDL中引用Verilog模块吗?”引用Babage的话:“我无法正确理解可能引发这样一个问题的思想混乱。”非常感谢大家。看来我的问题的答案的确是“不,你不能”。此外,我将牢记关于提出形式更好的问题的建议。