LogicLock: 逻辑锁定流程与实践:(时序约束、逻辑锁定、反标、增量编译)

LogicLock: 逻辑锁定流程与实践:(时序约束、逻辑锁定、反标、增量编译)

https://weibo.com/p/1001603952035761388055?comment=1

2016年3月12日 02:50 阅读 19

2016年3月12日   周六 晴   小玄子

//*********************************

1.合理规划设计层次并划分模块;

2.分析综合,对设计的每个模块进行综合;

3.对每个子模块建立Quartus II软件工程,在每个独立的工程中分别对每个子模块进行时序约束,以满足每个子模块的时序性能和面积目标,创建LogicLock区域;

4.当所有子模块都满足要求后,导出所有模块和LogicLock区域的反标信息,作为后续设计的约束;

5.建立顶层工程,根据设计要求选择节点反标或布线反标,将每个子模块的LogicLock区域反标信息导入顶层设计中;

6.编译顶层设计,并观察顶层设计是否满足设计需要。

7. 主程序逻辑锁定。

8.增量编译,缩短实践

 

 

//-------------  方法  使用quartus II 11.1

//---------时序约束,逻辑锁定,反标,增量编译。

1>.总工程规划完成。(可先完成总工程,并时序约束。1分07秒)

2>.子模块单独建工程,

3>.子模块工程时序约束。(必须有约束文件,否则无法生成*.qxp)

1.新建约束文件:工程名.sdc

a:创建输入时钟约束,约束FPGA管脚进入的时钟

# Create clock constrains

create_clock -period 20.00 [get_ports clk_bank1]

b: 创建虚拟时钟,约束输入,输出信号。

# Create virtulal clk

create_clk -name clock_ext1 -period 10.00

create_clk -name clock_ext2 -period 10.00

c: DLL自行产生相应时钟。

derive_pll_clocks

d: setup 和 hold 应用于每个跨时钟区域。分析时钟不确定性。 

#derive clock uncertainty

derive_clock_uncertainty

e:忽略跨时钟域分析,列出的时钟按异步处理,不报警。

   #assinging them to asynchronus groups

set_clock_groups \

-asynchronous \

-group {clk_bank1} \

altpll0|altpll_component|auto_generated|pll1|clk[0]}]

f:设置输入,输出延时。

# set input and output delays

set_input_delay -clock { clock_ext } -max 4  [get_ports {data1}]

set_input_delay -clock { clock_ext } -min -1 [get_ports {data1}]

set_output_delay -clock { clock_ext2 } -max 6 [get_ports {dataout}]

set_output_delay -clock { clock_ext2 } -min -3 [get_ports {dataout}]

 

2.assignment/LogicLock regions:timequest timing analyzer :添加时序文件。apply

3. 分析综合,analysis & synthesis /fillter

4. 运行 TimeQuest Timing Analyzer ; tool/timequest time analysis

5. read SDC file / Report SDC/Report Clocks / Report Clock Transfers /

6. 关闭 TimeQuest Timing Analyzer,运行全编译。

4>.创建LogicLock区域.

    1.Assignment / LogicLock Regions Window.

2.右键选择“Root_region”项并选择“new”,新建区域并将名称取为lock_mult

3.右键选择新建的“lock_mult”项,打开属性窗口。将左侧的工程层次栏中的pipemult模块(IC型号下方)拖入,

 拖入后会出现pipemult的标志.

4.全编译。

5-1.反标信息到处方法1

选择“Assignment”/“back-annotated  Assignment”选项,(与管脚相关模块用:默认或高级),可删除分配管脚。

全编译,生成pipemult.qsf反标文件。

project/exoort design partition  /*.qxp 生成网表信息。

(5-2.反标信息到处方法1。导出assignment信息

   选择“Assignment”/“Export Assignment”选项,勾选back-annotated,导出约束信息。)

5>.将子模块反标信息加入顶层工程。

1.打开顶层工程,全编译一遍。

2.替换底层模块设计文件

3.反标注选择。

回到主界面,单击左侧型号下方顶层名称,展开topmult,可以看到工程层次目录。

右键选择底层模块“pipemult:inst1”,选择“Locate”/“Locatein Assignment Editor”选项

选择“Import File Name”选择,*.qxp文件(pipemult.qsf备用),也就是刚才所选择输出设置信息

    4.全部编译一遍(需要添加时序约束)。(1分38秒)

6>.反标注的模块可以都进行逻辑锁定。大小固定,状态浮动。

    1.全编译一次。(1分38秒)

8>.增量编译。

1.Assignments /settings / incremental compilation / rapid recomplie:ON (快速重新编译,文件保持,则保留布局布线,)

export project v:(导入模块自动作为分区)

(还可选择使用细化的增量编译方法)

2.全编译,第一次,(1分38秒)

 不更改,第二次,(39秒)

 

时间对比:

原始时间:67秒

反标后:  98秒

增量编译后:39秒

 

汇总:反标后时间变为原来1.4倍。

      增量编译后,时间变为原来0.58.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值