首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

modulsim中编译出现这个错误怎么解决?

modulsim中编译出现这个错误怎么解决?

我在用modulsim编译一个.vh的verilog头文件的时候出现这个错误:
vlog -work work -source -novopt D:/work/ddr2_parameters.vh
Model Technology ModelSim SE vlog 6.1d Compiler 2006.01 Jan 23 2006
###### D:/work/ddr2_parameters.vh(39):     parameter TCK_MIN          =    5000; // tCK    ps    Minimum Clock Cycle Time
** Error: D:/work/ddr2_parameters.vh(39): (vlog-2155) Global declarations are illegal in Verilog 2001 syntax.
###### D:/work/ddr2_parameters.vh(83):     parameter TLZ              =     TAC; // tLZ    ps    Data-out low-impedance window from CK/CK#
** Error: D:/work/ddr2_parameters.vh(83): Undefined variable: TAC.
** Error: D:/work/ddr2_parameters.vh(83): 'TAC' already declared in this scope (work).
** Error: D:/work/ddr2_parameters.vh(83): Verilog Compiler exiting


ddr2_parameters.vh文件被另外一个DDR2文件include,但是用modulsim编译所有文件时,就只有在编译到ddr2_parameters.vh文件时出现上面的错误,ddr2_parameters.vh文件内容如下:
    // Timing parameters based on Speed Grade


                                          // SYMBOL UNITS DESCRIPTION
                                          // ------ ----- -----------
 
 //speed grade parameter
    parameter TCK_MIN          =    5000; // tCK    ps    Minimum Clock Cycle Time
    parameter TJIT_PER         =     125; // tJIT(per)  ps Period JItter
    parameter TJIT_DUTY        =     150; // tJIT(duty) ps Half Period Jitter
    parameter TJIT_CC          =     250; // tJIT(cc)   ps Cycle to Cycle jitter
    parameter TERR_2PER        =     175; // tERR(nper) ps Accumulated Error (2-cycle)
    parameter TERR_3PER        =     225; // tERR(nper) ps Accumulated Error (3-cycle)
    parameter TERR_4PER        =     250; // tERR(nper) ps Accumulated Error (4-cycle)
    parameter TRP              =   15000; // tRP    ps    Precharge command period
    parameter TXARDS           =       6; // tXARDS tCK   Exit low power active power down to a read command
    parameter CL_MIN           =       3; // CL     tCK   Minimum CAS Latency
         ............
还有很多parameter,我屏蔽第一行,错误改到第二行  ,以此类推下去,怎么解决呢  ?我是在modulsim中单独建议工程的,在ISE中时候没有这个错误。望高手指教!
   

看看这个帖子吧,上面有解释

可能问题
1。有把。。。\coregen\mem_interface_top_withtb\rtl里所有文件加到新工程里吗?
2。有把。。。\coregen\mem_interface_top_withtb\sim里所有文件加到新工程里吗?
3。有把'board_file' 改成顶层模块的名字吗?
4。由认真看readme文本里的最后一段吗?
Notes : To run simulations for different data widths and configurations, users should modify the test bench files
with right memory models and design files. User should modify the sys_clk_in and sys_clk_in_L frequency in test bench according to the frequency selected for the design.
这涉及到你用mig生成的核是针对什么型号的DDR的,数据和地址位宽,工作频率等相关参数。
然后根据这些到ddr_parameters.v文件里看看你用到的那段的相关参数(被注释掉地就不管了)和你ddrdatasheet提供的参数要求是不是相符
,比如下面这段:
    parameter tCK              =     5.0; // tCK    ns    Nominal Clock Cycle Time
    parameter tDQSQ            =     0.4; // tDQSS  ns    DQS-DQ skew, DQS to last DQ valid, per group, per access
    parameter tMRD             =    10.0; // tMRD   ns    Load Mode Register command cycle time
    parameter tRAP             =    15.0; // tRAP   ns    ACTIVE to READ with Auto precharge command
    parameter tRAS             =    40.0; // tRAS   ns    Active to Precharge command time
    parameter tRC              =    55.0; // tRC    ns    Active to Active/Auto Refresh command time
    parameter tRFC             =    70.0; // tRFC   ns    Refresh to Refresh Command interval time
    parameter tRCD             =    15.0; // tRCD   ns    Active to Read/Write command time
    parameter tRP              =    15.0; // tRP    ns    Precharge command period
    parameter tRRD             =    10.0; // tRRD   ns    Active bank a to Active bank b command time
    parameter tWR              =    15.0; // tWR    ns    Write recovery time
还有这段:
    parameter ADDR_BITS        =      13; // Set this parameter to control how many Address bits are used
    parameter DQ_BITS          =      16; // Set this parameter to control how many Data bits are used
    parameter DQS_BITS         =       2; // Set this parameter to control how many DQS bits are used
    parameter DM_BITS          =       2; // Set this parameter to control how many DM bits are used
    parameter COL_BITS         =       9; // Set this parameter to control how many Column bits are used

以上这些参数是我的ddr的参数,只是举个例子。
应该可以跑仿真了吧
还不行的话,就再把ddr.v文件打开,到最后一段,还有几个参数,对照你的ddr的datasheet修改一下,再不行就见鬼了。
比如我的:
        specparam tDSS             =     1.0; // tDSS   ns    DQS falling edge to CLK rising (setup time) = 0.2*tCK
        specparam tDSH             =     1.0; // tDSH   ns    DQS falling edge from CLK rising (hold time) = 0.2*tCK
        specparam tIH              =   0.600; // tIH    ns    Input Hold Time
        specparam tIS              =   0.600; // tIS    ns    Input Setup Time
        specparam tDQSH            =    1.75; // tDQSH  ns    DQS input High Pulse Width = 0.35*tCK
        specparam tDQSL            =    1.75; // tDQSL  ns    DQS input Low Pulse Width = 0.35*tCK
以上这些只能解决功能仿真问题,至于后仿真我这边还有问题,知道告诉我一声:)

另:用于跑波形的test_top里面的clk,reset信号的赋值也要根据你自己的需要手动设置一下。

http://www.edacn.net/bbs/viewthread.php?tid=82867

[此贴子已经被admin于2007-8-14 17:19:02编辑过]

i love this game
我也遇到同样的问题,现在解决了。
你在参数文件前加  module   yourname();
  结束加endmodule
就可以了,祝你好运!
关注盛金华尓网 www.bestshare.com.cn

最有价值的数据信息,全情收录,帮您决战股市。



证监会19日公布了《转融通业务监督管理试行办法》以及相关配套草案,证监会有关负责人表示,将适时推出转融通。
  融资融券业务主要是券商把自有资金和自有证券出借给客户,转融通则是券商向金融公司借入资金和证券后再转借给客户,实质上是证券金融公司对券商的融资融券。
 从风险指标来看,《办法》规定,证券金融公司对单一证券公司转融通的余额,不得超过证券金融公司净资本的50%;融出的每种证券余额不得超过该证券可流通市值的5%;充抵保证金的每种证券余额不得超过该证券总市值的10%。同时,为适应融资融券业务常规化的需要,证监会放宽了业务准入门槛。
  证监会有关负责人表示,自2010年3月31日启动证券公司融资融券业务试点以来,截至目前,共批准25家证券公司开展了融资融券业务。统计数据显示,截至8月18日,融资和融券的截止日余额分别为329.69亿元和2.60亿元,其中融资余额占比99.22%,试点以来,全行业尚未出现一起强制平仓的风险。
  “转融通将刺激融券的业务量增长,但关键在于标的证券品种范围能否扩大。”武汉科技大学金融证券研究所所长董登新对《经济参考报》记者表示,目前现货市场上活跃的证券品种还是以中小板和创业板居多。但目前融资融券的标的证券则主要集中在一些相对蓝筹的大盘股上。在标的证券的范围方面,如果能拓展到中小板和创业板,对于把融券做大更有效果。
  董登新说:“会让新股和次新股的波幅收窄,在做空机制的作用下,将对市场发掘合理的价格产生作用。同时对于现货市场的庄家和投机者也会产生一定的威慑力,投机会受到一定程度的抑制。”
返回列表