GUI界面约束方法
界面约束方法易上手,但效率较低。有两种方式可以打开设置 IO 约束的界面:(必须完成 Syn Opt 的 Read Design 才可
打开,否则处于置灰状态)
1. 在 FPGA Flow 面板中,展开 User Constraints,双击 IO Constraint;
2. 在菜单栏中展开 Tools,双击 IO Constraint。
在已打开的 IO Constraint 界面中设置每个端口的 Bank、 Location、 PullType、
IOStandard 等参数。
IO 界面配置属性如下表所示
芯片封装为 BGA256 时, IO 约束的配置界面如下图所示
各形状中的红色小点表示该 IO 端口已被占用。 鼠标停留在 IO 某一端口时,会有浮
窗显示该端口的信息,并有白色边框将其所在 Bank 显示出来。
用户还可以通过界面左侧的 Pin Resource 和 Pin Characteristic 来区分 Bank,勾选后
显示出的各种颜色如下图所示。其中,红色: 时钟、品红色:电源、 灰色:接地,这三
种类型的端口不属于任何 Bank。 左上角的红色原点对应芯片上的小凹点,表示芯片引
脚的起始点。
其中短斜线表示差分对,如上图中的 B1 (positive) 和 F3 (negative)。 若选择 B1 的
IOStandard 属性为 LVDS25,则 TD 自动分配相应的差分对管脚 F3(negative), F3 的
IOStandard 属性也为 LVDS25, 如下图的 beep 对应的差分信号为 beep(n)。
当芯片封装为 LG144 时, IO 约束配置属性如表 4-1,配置界面如下图:
BANK和LOCATION的设置:
芯片封装不同时, 管脚数和管脚名称不同, Bank 数也不同,以 Anlogic AL3-10 系
列为例, IO 管脚共分为 8 个 Bank。管脚位置设置时可先指定 Bank,再指定 Bank 中的
Location,或直接指定 Location, TD 会自动匹配相应的 Bank。 若只选择 Bank,而不
指定 Location 时, TD 会默认为用户选择这个 Bank 中管脚号最小的 Pin 作为这个管脚
的 Location。 Location 还支持直接输入管脚名称, 在 Location 处双击并输入需要的管
脚名称, TD 同样会自动匹配相应的 Bank。
当指定 Location 为 VirtualIO 时,则该 Port 被指定到了一个非物理 IO,不属于任何
Bank,在综合布线时,也不会为其分配任何 IO 资源, VirtualIO 的所有电平参数都不可
设置。 界面支持一键设置 VirtualIO 功能,点击左上角
按钮,会自动给未分配管脚
的 Port 分配成 VirtualIO。
此外, 界面支持拖拽功能,点击选中一个 Port Name,并拖拽至上方图形界面处想
要分配给该 Port 的 Location。完成拖动后,该 Location 出现红点,下方 Port 的 location
信息也会相应变化。
IOstandard 的设置:
IOStandard 设置 IO 端口的电平标准。每个 Bank 都可以随意设置为支持该器件的
电平标准,不同的电平标准在同一个 Bank 中的电平要一致。TD 提供 LVCMOS、 LVDS、
LVTTL33、 PCI33 供用户选择。其中 LVCMOS 有 1.2v, 1.5V, 1.8V, 2.5V, 3.3V 的电
压可选择。 LVDS为差分对输入输出,当所选的IO端口为输入信号时,只能选择LVDS25,
LVDS33, LVPECL33; 所选 IO 端口为输出信号时,可选 LVDS25_E, LVDS33_E,
LVPECL33_E。默认的电平标准为 LVCMOS25(default)。(不同器件的默认电平标准可
能不同,请以各器件的数据手册及实际界面显示为准)
DriveStrength 的设置
DriveStrength 设置 IO 端口的驱动能力。不同电平标准的驱动能力不同,如
LVCMOS25 的驱动能力为 4,8,12,16,单位为 mA。 DriveStrength 的值越小,表示驱动能
力越弱, DriveStrength 的值越大,表示驱动能力越强。
PullType 的设置:
PullType 设置 IO 端口的上拉类型。PullType 共有四种选择: PULLUP、 PULLDOWN、
NONE、 KEEPER。 数字电路有三种状态:高电平、低电平和高阻状态。当输入为无效
信号的时候,可以通过上拉(PULLUP)电阻和下拉(PULLDOWN)电阻的方式使其处于
稳定状态。当选择(KEEPER)时, 使电平保持为上一个有效值。当 IO 端口设为 LVDS 的
时候, PullType 只能设为 None。
其他电平参数的含义及适用范围如下表所示:
参数 | 适用范围 | 含义 | 可选值 |
SlewRate | 单端输出 | 输出压摆率 | Slow, Med, Fast |
DiffResistor | 差分输入 | 差分端接电阻 100ohm | 100, None |
PCIClamp | 单端输入、输出 | PCI 电平标准要求有箝位 | ON, OFF |
PackReg | 输入、输出 | 将寄存器打包到 pad 中 Auto 表示按照全局设定值 ON, OFF 的优先级高于全局设定值 |
Auto, ON, OFF |
InDelay | 输入 | 调节输入延时 | 实际延时取决于芯 片及 IOB 的类型 |
OutDelay | 输出 | 调节输出延时 | 实际延时取决于芯 片及 IOB 的类型 |
Back Annotation 反标功能:
若工程中不存在或未完整设置 adc 文件, IO Constraint 界面支持 back annotation 反
标功能。在 FPGA Flow 界面直接将工程运行至 Optimize Placement,打开 IO Constraint,
点击界面左上角的反标按钮,会自动给未分配管脚的 Port 分配 Location, 界面上方相应
的 location 位置会显示红点, 界面下方的 Location 信息显示为蓝色。
当所有设置都完成后,用户可单击左上角的保存按钮,输入文件的名称,单击保存,
此时界面下方的 Location 信息显示为变为黑色。
当所有设置都完成后,用户可单击左上角的保存按钮,输入文件的名称,单击保存。
若工程中已添加 adc 文件,打开 IO Constraint 界面时,会读取 adc 文件中的信息,更改
设置后进行保存,将直接更新 adc 的内容。若工程中没有添加 adc 文件,保存后,将直
接在工程中添加 adc 文件。
文本约束方法
适合对ADC语法比较熟悉的用户,适合大量管脚批量约束,可以进行编辑粘贴,配合编辑器的列功能简直无敌了。
新建 ADC 文件
1. 点击新建按钮
, 在新打开的窗口中输入 ADC 命令
2. 点击保存
按钮 , 将文件路径设置在项目目录下,文件名为 demo.adc, 然后单击
保存。
添加 ADC 文件
1. 右键单击 Hierarchy Navigation 面板中 Project 里的 Constraints, 选择 Add
ADC File, 选择 demo.adc, 打开。
或者通过双击 FPGA Flow 面板中 User Constraints 下的 Add ADC File, 选择
demo.adc,点击打开。 必须完成 Syn Opt 的 Read Design 才可打开,否则处于置灰状态。
* 工程中支持对一个constraint_1中添加多个adc文件, 当添加一个新的adc文件时,
之前已添加的文件会被默认设置为disable, 即最后添加进工程的adc文件为enable。 可
以通过右键选择File Properties更改adc文件的enable/disable属性。
ADC 约束说明
ADC(Anlogic Design Constraint)文件作为 TD 软件的用户物理约束文件,包含由
用户指定的各类管脚及单元物理信息相关的约束。
1. 管脚特性约束
定义如下:
set_pin_assignment {pin_name} {attributes}
Pin_name: 电路的管脚名
Attributes: 各类物理相关的属性,目前可支持的约束有 BANK, LOCATION,
IOSTANDARD, DRIVESTRENGTH, PULLTYPE, PREEMPHASIS,
SLEWRATE, DIFFRESISTOR, PCICLAMP, PACKREG 等 10 种。其中,
对于位置约束(LOCATION),将检查目标位置是否合法,以及是否有多
个管脚被分配至同一位置,一旦添加了 ADC 文件,要求为所有管脚锁
定位置。
注: PreEmphasis 预加重技术,是一种在发送端对输入信号高频分量进
行补偿的信号处理方式,能有效提高输出信噪比。只有 LVDS 输出时需
要加上, LVDS_E 是模拟 LVDS 输出,没有预加重的设置。
格式范例:> set_pin_assignment {sys_clk} {LOCATION=P23; IOSTANDARD=LVCMOS18;
DRIVESTRENGTH=4; PULLTYPE=PULLUP; SLEWRATE=MED; PCICLAMP=ON;
PACKREG=ON; OUTDEL=1;}
IO 特性设置参数
PAMERATER | VALUE |
BANK | BANK1, BANK 2, BANK 3, BANK 4, BANK 5, BANK 6, BANK 7, BANK 8 |
LOCATION | 芯片封装不同,管脚数和管脚名都不相同 |
IOSTANDARD | LVCMOS12,LVCMOS15,LVCMOS18,LVCMOS25,LVCMOS33,LVDS25, LVDS25_E, LVDS33, LVDS33_E, PCI33, LVTTL33, LVPECL33, LVPECL33_E |
DRIVESTRENGTH | 2, 4, 8, 12, 16, 20, NA |
PULLTYPE | PULLUP, PULLDOWN, NONE, KEEPER |
SLEWRATE | FAST, MED, SLOW |
DIFFRESISTOR | 100, NONE |
PCICLAMP | ON, OFF |
PACKREG | AUTO, ON, OFF |
注: IOSTANDARD 具体支持以各系列芯片的数据手册为准。
对于有差分对输出 VCM 和 VOD 设置需求的用户,需要在 ADC 文件中手动设置
VCM 和 VOD 的具体数值,格式范例如下:
> set_pin_assignment {sys_clk} { LOCATION = A3; IOSTANDARD = LVDS33; VCM
= 0.8; VOD = 350m }
VCM 和 VOD 设置只针对 LVDS25 和 LVDS33,其他电平不支持。不同器件对于
VCM 和 VOD 的设置不同,各个器件可设置的具体参数值如表 9-2 所示。
表 9-2 各个器件参数范围表
Device | VOD(mV) | VCM(V) |
EG4 | 150、 200、 250、 350*、 480 | 0.8、 0.9、 1.2* |
EF2 | 150、 200、 250、 350*、 480 | 不支持 |
EF3 | 150、 200、 250、 350*、 480 | 0.8、 0.9、 1.2* |
AL3 | 150、 200、 250、 350* | 0.8、 0.9、 1.2* |
注:(1)不建议将 VOD 设置为 480mV。(2) *表示软件默认值, VOD 默认值为 350mV, VCM 默
认值为 1.2V。(3) VCM 和 VOD 设置需根据上表中给出的具体数值设置,超出上表范围不支持。
2. 单元特性约束
定义如下:
set_inst_assignment {inst_name} {attributes}
Inst_name: 电路的单元实例名, instance 的名字可在生成的网表文件(prj_gate_sim.v)
中查找。
Attributes: 目前仅支持位置约束 Location, location 可以在 Chip Viewer 中查找。 Chip
Viewer 的详细使用手册,请参考该文档的 8.2 Chip Viewer 章节。
格式范例:
> set_inst_assignment {PLL_INST1} {location = x34y37z0;}
> set_inst_assignment {PLL_INST2} {location = x0y0z0;}
> set_inst_assignment { _al_u451|lcd/lcd_rs_reg} {location = x21y17z1;}