[转帖]活用Quartus II内置模板,快速输入HDL代码、TimeQuset束缚及tcl语句等

在看Dolby公司的工程师编写的VHDL代码时,发现他们将工程及其子模块全部放在同一个文件中,刚开始看得我头晕晕的,后来发现可以通过顶层实体进行查看其RTL视图,从而理清各个模块间的关系。方法如下:Project Navigator-->Hierarchy-->Entity-->在顶层文件上右击-->Locate-->Locate in RTL'Viewer。就可以打开RTL视图了。太牛了。此外SDC约束文件可以加载多个。

LVDS的TX和RX数据和时钟引脚都必须进行约束,且RX数据和时钟引脚还得加上差分约束,具体如下所示:

此外更重要的一点是输入时钟尤其是差分时钟的输入最好通过一个clk_buf缓冲输出(Altera中的模块是ALTCLKCTRL),这样才能正确显示,且LVDS_RX的8组输入时钟经过BUF处理后不会出现PLL上的错误。

# | module altera_lvds_rx_1
set_instance_assignment -name IO_STANDARD LVDS -to LVDS_RX1_p[0]
set_location_assignment PIN_D6 -to LVDS_RX1_p[0]

# | module altera_lvds_tx_1
set_instance_assignment -name IO_STANDARD LVDS -to LVDS_TX1_p[0]
set_location_assignment PIN_A2 -to LVDS_TX1_p[0]

# +-----------------------------------
set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to LVDS_RX*
set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to LVDS_CLKIN*

 

来源:http://wenku.baidu.com/view/f4b507563c1ec5da50e270ba.html

http://www.doc88.com/p-675124532917.html

SDC约束文件的编写,在TimeQuest Timing Analyzer中可以看到需要约束的时钟数目。

TimeQuest Timing Analyzer-->Reports-->Diagnostic-->Report Clocks

##############################################################################
####
#Generated by: zlh840 
#Purpose     : To verify gate-clock conversion using quartus 12.0
#Project      : RX2TX_5CH
#Revision    : None
#
#Date        :11/26/2012   M/D/Y
#
##############################################################################
####Time Information
set_time_format -unit ns -decimal_places 3

#Create_clock for system and its duty cycle is 5:5
create_clock -name {altera_reserved_av_osc_clk} -period 22.500 -waveform { 0.000 11.250 } [get_pins {*|arriav_oscillator|clkout}]
create_clock -name {altera_reserved_tck} -period 100.000 -waveform { 0.000 50.000 } [get_ports {altera_reserved_tck}]
create_clock -name {CLK27A_IN} -period 37.037 -waveform { 0.000 18.519 } [get_ports {CLK27A_IN}]

#Create_clock for LVDS1_RX_CLK but its duty cycle is 4:3
create_clock -name LVDS_RX_CLK_1 -period 12.5 -waveform {0 7.143} [get_ports {LVDS_CLKIN1_p}]
create_clock -name LVDS_RX_CLK_5 -period 12.5 -waveform {0 7.143} [get_ports {LVDS_CLKIN5_p}]

derive_pll_clocks

create_clock -name virtual_clock_lvds -period 12.500 -waveform {0 7.143}

set_input_delay -clock [get_clocks virtual_clock_lvds]  -max 0.200  [get_ports LVDS_RX1_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -min -0.200 [get_ports LVDS_RX1_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -max 0.200  [get_ports LVDS_RX2_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -min -0.200 [get_ports LVDS_RX2_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -max 0.200  [get_ports LVDS_RX3_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -min -0.200 [get_ports LVDS_RX3_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -max 0.200  [get_ports LVDS_RX4_p*] -add_delay
set_input_delay -clock [get_clocks virtual_clock_lvds]  -min -0.200 [get_ports LVDS_RX4_p*] -add_delay

 

来源:http://www.cnpetweb.com/a/xinxizhongxin/lanmu9/2011/1125/27182.html

来源:http://bbs.ednchina.com/BLOG_ARTICLE_1909737.HTM

在Quartus II的菜单里找到了一个好去处:language template。

   在Edit -> Insert Template下可以看到Verilog HDL、SystemVerilog、VHDL、AHDL、Quartus II TCL、TCL的语言模板。
   在Verilog HDL下面,可以找到基本的逻辑操作符、基本语言结构,甚至是完整的设计。

    其中的基本语言结构和操作符可用来在编程时参考,而完整的设计作为自学语言的实例是再好不过了。这些完整的设计不仅仅是语法上结构完整,其书写格式、参数化、注释都很标准,从中可以学到许多优秀的编码风格和特殊功能的描述方法。

比如,双端口RAM的描述中就有关于读写同时操作时,读取返回的值是新值还是旧值的区别,采用阻塞和非阻塞赋值就可以在综合后的代码中得到这样的差别。

   同样,在其他EDA工具中也有类似的语言模板,都可以作为我们提高编码水平的助手。

posted on 2012-11-06 19:30  zlh840  阅读(1551)  评论(1编辑  收藏  举报

导航