2017-08-14 605 views
0

ncverilog有兩個文件,sell.vselltest.v和其日誌文件說:一個reg是在此方面不合法的左值[6.1.2(IEEE)

`ncelab: *E,RANOTL (./selltest.v,6|36): A reg is not a legal lvalue in this context [6.1.2(IEEE)]. 
vendor vendor(NT5,NT10,clk,reset,cola,change); 


ncelab: *E,RANOTL (./selltest.v,6|43): A reg is not a legal lvalue in this context [6.1.2(IEEE)]. 
ncverilog: *E,ELBERR: Error during elaboration (status 1), exiting.` 


只有我selltest.v"vendor vendor(NT5,NT10,clk,reset,cola,change);",我不知道發生了什麼事,我的計劃的部分如下

`timescale 1ns/1ns 

module test_vendor; 

reg NT5 , NT10 , clk , reset; 

//wire cola , change; 
reg cola , change; 

vendor vendor(NT5,NT10,clk,reset,cola,change); 
+1

請參閱http://go.mentor.com/wire-vs-reg –

+0

有趣的博客。我個人會補充說,有一箇舊的(被拒絕的)提議統一regs和wire pre-SV,並且「連續賦值」與retro-fitted delta延遲模型並不真正兼容,這可能會使一些討論沒有實際意義。 – EML

+0

啊 - 剛纔意識到 - 優秀的博客:) – EML

回答

1

你試圖將一個模塊的輸出連接到reg。你不能這樣做:你必須開車(即wire/etc)。請參見12.3.9在2005年LRM端口連接規則:

只有網或結構性淨表達應在 分配

匯的這一切都得到了SystemVerilog中清理,其中的區別校正和電線之間的糾正/澄清。

一個'左值'是一個可以出現在賦值左邊的值(左值),即它可以被賦值,所以是'匯'。