Libero SoC 仿真
库设置说明
介绍
(提出问题)
本文档的目的是描述使用 Libero SoC 项目作为输入来设置模拟环境的过程。本文档对应于提供用于 Libero SoC v11.9 和更新软件版本的预编译库。提供的库是为 Verilog 编译的。 VHDL 用户需要允许混合模式仿真的许可证。
编译的仿真库可用于以下工具:
- Aldec Active-HDL
- Aldec Riviera-PRO
- Cadence Incisive Enterprise 和 Xcelium
- 西门子QuestaSim
- Synopsys VCS
要请求不同模拟器的库,请联系 Microchip 技术支持.
Libero SoC 集成
(提出问题)
Libero SoC 通过生成 run.do 支持使用 ModelSim ME 进行仿真 file。 这 file ModelSim ME/ModelSim Pro ME 使用它来设置和运行仿真。如需使用其他仿真工具,可以生成ModelSim ME/ModelSim Pro ME run.do并修改Tcl脚本 file 使用与您的模拟器兼容的命令。
1.1 Libero SoC Tcl File 一代 (提出问题)
在 Libero SoC 中创建和生成设计后,在所有设计阶段(合成前、合成后和布局后)启动 ModelSim ME/ModelSim Pro ME 仿真。这一步生成run.do file 适用于每个设计阶段的 ModelSim ME/ModelSim Pro ME。
重要的: 开始每次模拟运行后,重命名自动生成的 run.do file 放在仿真目录下,以防止 Libero SoC 覆盖该目录 file. 例如amp乐 files 可以重命名为 presynth_run.do、postsynth_run.do 和 postlayout_run.do。
Active-HDL 和 Riviera-Pro 的 Aldec 设置(提出问题)
运行.do file ModelSim ME/ModelSim Pro ME 使用的模型可以修改并用于使用 Aldec 仿真器进行仿真。
2.1 环境变量(提出问题)
将环境变量设置为您的许可证 file 地点:
LM_LICENSE_FILE:必须包含指向许可证服务器的指针。
2.2 下载编译好的库(提出问题)
从 Microchip 下载 Aldec Active-HDL 和 Aldec Riviera-PRO 的库 web地点。
2.3 转换run.do用于Aldec模拟(提出问题)
运行.do fileLibero SoC 生成的用于使用 Active-HDL 和 Riviera-Pro 工具进行仿真的文件只需进行一次更改即可用于使用 Active-HDL 和 Riviera-Pro 进行仿真。下表列出了要在 ModelSim run.do 中修改的 Aldec 等效命令 file.
表 2-1。 Aldec 等效命令
| 模型模拟 | 活性高密度脂蛋白 |
| 视频博客 | 一个日志 |
| 伟康 | 艾康 |
| 虚拟库 | 阿里布 |
| 虚拟仿真 | 阿西姆 |
| 虚拟地图 | 地图 |
以下为amp与 Aldec 模拟器相关的 le run.do。
- 设置当前工作目录的位置。
设置域名 - 设置工作库名称,映射其位置,然后映射 Microchip FPGA 系列的位置
预编译库(例如amp文件,SmartFusion2),您正在其上运行您的设计。
alib 预合成器
amap 前合成器 前合成器
高德SmartFusion2 - 编译所有必需的 HDL file在设计中使用所需的库。
alog –work presynth temp.v(用于 Verilog)
alog –工作 presynth testbench.v
acom –work presynth temp.vhd(用于 Vhdl)
acom –工作 presynth testbench.vhd - 模拟设计。
asim –L SmartFusion2 –L presynth –t 1ps presynth.testbench
运行10us
2.4 已知问题(提出问题)
本节列出了已知问题和限制。
- 使用 Riviera-PRO 编译的库是特定于平台的(即 64 位库不能在 32 位平台上运行,反之亦然)。
- 对于包含 SERDES/MDDR/FDDR 的设计,请在 run.do 中使用以下选项 file编译设计后运行模拟时:
– 主动 HDL:asim –o2
– Riviera-PRO:asim –O2(用于合成前和布局后仿真)和 asim –O5(用于布局后仿真)
Active-HDL 和 Riviera-Pro 的 Aldec 设置具有以下待定 SAR。欲了解更多信息,请联系 Microchip 技术支持. - SAR 49908 – Active-HDL:数学模块模拟的 VHDL 错误
- SAR 50627 – Riviera-PRO 2013.02:SERDES 设计的仿真错误
- SAR 50461 – Riviera-PRO:模拟中的 asim -O2/-O5 选项
Cadence 精辟设置 (提出问题)
您需要创建一个脚本 file 类似于 ModelSim ME/ModelSim Pro ME run.do 来运行
Cadence Incisive 模拟器。按照以下步骤创建脚本 file 对于 NCSim 或使用脚本 file
提供转换 ModelSim ME/ModelSim Pro ME run.do file进入配置 files
使用 NCSim 运行模拟所需的。
重要:节奏 已停止发布新版本的 Incisive Enterprise
模拟器并开始支持Xcelium模拟器。
3.1 环境变量(提出问题)
要运行Cadence Incisive模拟器,请配置以下环境变量:
- LM_LICENSE_FILE:必须包含指向许可证的指针 file.
- cds_root:必须指向 Cadence Incisive Installation 的主目录位置。
- PATH:必须指向cds_root指向的tools目录下的bin位置,即
$cds_root/tools/bin/64bit(对于 64 位计算机,$cds_root/tools/bin 对于 32 位计算机)。
在64位和32位操作系统之间切换时,可以通过三种方式设置模拟环境:
情况 1:PATH 变量
运行以下命令:
对于 64 位机器,设置 path = (install_dir/tools/bin/64bit $path)
对于 32 位机器,设置 path = (install_dir/tools/bin $path)
案例 2:使用 -64bit 命令行选项
在命令行中指定 -64bit 选项以调用 64 位可执行文件。
案例 3:设置 INCA_64BIT 或 CDS_AUTO_64BIT 环境变量
INCA_64BIT 变量被视为布尔值。您可以将此变量设置为任何值或空字符串。
setenv INCA_64BIT
重要: INCA_64BIT环境变量不会影响其他Cadence工具,例如IC工具。但是,对于 Incisive 工具,INCA_64BIT 变量会覆盖 CDS_AUTO_64BIT 环境变量的设置。如果设置了 INCA_64BIT 环境变量,则所有 Incisive 工具都以 64 位模式运行。 setenv CDS_AUTO_64BIT 包括:INCA
重要: 字符串 INCA 必须为大写。所有可执行文件必须在 32 位模式或 64 位模式下运行,请勿将变量设置为包含一个可执行文件,如下所示:
setenv CDS_AUTO_64BIT 包括:ncelab
其他 Cadence 工具(例如 IC 工具)也使用 CDS_AUTO_64BIT 环境变量来控制 32 位或 64 位可执行文件的选择。下表显示了如何设置 CDS_AUTO_64BIT 变量以在所有模式下运行 Incisive 工具和 IC 工具。
表 3-1。 CDS_AUTO_64BIT 变量
| CDS_AUTO_64BIT 变量 | 精辟的工具 | 集成电路工具 |
| setenv CDS_AUTO_64BIT ALL | 64 位 | 64 位 |
| setenv CDS_AUTO_64BIT 无 | 32 位 | 32 位 |
| setenv CDS_AUTO_64BIT 排除:ic_二进制 | 64 位 | 32 位 |
| setenv CDS_AUTO_64BIT 排除:INCA | 32 位 | 64 位 |
重要的: 所有 Incisive 工具必须在 32 位模式或 64 位模式下运行,不要使用 EXCLUDE 排除特定的可执行文件,如下所示:setenv CDS_AUTO_64BIT EXCLUDE:ncelab
如果设置 CDS_AUTO_64BIT 变量以排除 Incisive 工具 (setenv CDS_AUTO_64BIT EXCLUDE:INCA),则所有 Incisive 工具都在 32 位模式下运行。但是,-64bit 命令行选项会覆盖环境变量。
以下配置 file帮助您管理数据并控制模拟工具和实用程序的操作:
- 库映射 file (cds.lib) - 定义设计位置的逻辑名称。
- 库并将它们与物理目录名称相关联。
- 变量 file (hdl.var) - 定义影响模拟工具和实用程序行为的变量。
3.2 下载编译好的库(提出问题)
从 Microsemi 下载 Cadence Incisive 库 web地点。
3.3 创建 NCSim 脚本 File (提出问题)
创建 run.do 的副本后 files,执行以下步骤以使用 NCSim 运行仿真:
- 创建一个 cds.lib file 它定义了可访问的库及其位置。这 file 包含将库逻辑名称映射到其物理目录路径的语句。对于前ample,如果您正在运行 presynth 模拟,则 cds.lib file 编写如下代码块所示。
定义 presynth ./presynth
定义 COREAHBLITE_LIB ./COREAHBLITE_LIB
定义 smartfusion2 - 创建一个 hdl.var file, 可选配置 file 包含配置变量,决定如何配置您的设计环境。以下变量 files 包括:
– 用于指定编译器存储编译对象和其他派生数据的工作库的变量。
– 对于 Verilog,变量(LIB_MAP、 VIEW_MAP, WORK) 用于指定库和 views 在阐述器解析实例时进行搜索。
– 允许您定义编译器、阐述器和模拟器命令行选项和参数的变量。
如果是前合成器模拟 examp如上所示,假设我们有三个 RTL files:av、bv、testbench.v,需要分别编译成presynth、CORAHBLITE_LIB、presynth库。 HDL.var file 可以写成如下代码块所示。
定义合成前的工作
定义项目目录 files>
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/av => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/bv => COREAHBLITE_LIB )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/testbench.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, + => presynth ) - 编译设计 file使用 ncvlog 选项。
ncvlog +incdir+ –cdslib ./cds.lib –hdlvar ./hdl.var –logfile
ncvlog.log –update –linedebug av bv testbench.v - 使用 ncelab 详细阐述设计。阐述者根据设计中的实例化和配置信息构建设计层次结构,建立信号连接,并计算设计中所有对象的初始值。详细的设计层次结构存储在模拟快照中,它是模拟器用于运行模拟的设计的表示。
ncelab –消息 –cdslib ./cds.lib –hdlvar ./hdl.var –logfile ncelab.log –errormax 15 –
访问+rwc –status worklib。 :模块
布局后仿真期间的详细阐述
在布局后模拟的情况下,首先是 SDF file 在详细阐述之前需要使用 ncsdfc 命令进行编译。
国家计算机科学发展委员会file名称>.sdf –输出file名称>.sdf.X
在详细阐述过程中,使用带有 –autosdf 选项的已编译 SDF 输出,如以下代码块所示。
ncelab -autosdf –消息 –cdslib ./cds.lib –hdlvar ./hdl.var –logfile ncelab.log –errormax
15 –access +rwc –status 工作库。 :模块-sdf_cmd_file ./
sdf_cmd_file
sdf_cmd_file 必须如以下代码块所示。
已编译_SDF_FILE =“ file>” - 使用 ncsim 进行模拟。精心设计后,将创建一个模拟快照,该快照由 ncsim 加载以进行模拟。您可以在批处理模式或 GUI 模式下运行。
ncsim –消息 –batch/-gui –cdslib ./cds.lib –hdlvar ./hdl.var –logfile ncsim.log –
errormax 15 –工作库状态。 :模块
重要的: 以上编译、阐述、模拟三个步骤都可以放入一个shell脚本中 file 并来自命令行。可以使用 ncverilog 或 irun 选项一步模拟设计,而不是使用这三个步骤,如以下代码块所示。
ncverilog +incdir+ -cdslib ./cds.lib –hdlvar ./hdl.var
file设计中使用的>
伊伦+incdir+ -cdslib ./cds.lib –hdlvar ./hdl.var files
设计中使用>
3.3.1 已知问题(提出问题)
测试台解决方法
使用以下语句指定用户生成的测试平台中的时钟频率,或者 Libero SoC 生成的默认测试平台不适用于 NCSim。
始终@(SYSCLK)
#(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;
修改如下以运行仿真:
总是#(SYSCLK_PERIOD / 2.0) SYSCLK = ~SYSCLK;
重要:已编译 NCSim 的库是特定于平台的(即 64 位库与 32 位平台不兼容,反之亦然)。
使用 MSS 和 SERDES 的合成后和布局后仿真 在运行包含 MSS 模块的设计的合成后仿真或使用 SERDES 的设计的布局后仿真时,如果 –libmap 选项为
在阐述过程中未指定。这是因为在精化过程中,MSS 是从工作库解析的(因为默认绑定和工作库是 postsynth/post-layout),它只是一个固定函数。
ncelab 命令必须按以下代码块所示编写,以解析 MSS
来自 SmartFusion2 预编译库的块。
ncelab -libmap lib.map -libverbose -Message -access +rwc cfg1
和 lib.map file 必须如下:
配置cfg1;
设计;
默认库列表 smartfusion2 ;
结束配置
这会在查看工作库(即 postynth/post-layout)之前解析 SmartFusion2 库中的任何单元。
在每个模拟(presynth、postsynth 和 post-layout)的精化过程中,默认情况下可以使用 –libmap 选项。这可以避免由于解析库中的实例而导致的模拟问题。
ncelab: *F,INTERR: 内部异常
此 ncelab 工具例外是在使用 –libmap 选项进行合成后和布局后仿真期间 SmartFusion 2 和 IGLOO 2 中包含 FDDR 的设计的警告。
重要的: 此问题已报告给 Cadence 支持团队 (SAR 52113)。
3.4秒ampTcl 和 Shell 脚本 Files(提出问题)
下列 files 是配置 file设置设计和 shell 脚本所需的 file 用于运行 NCSim 命令。
光盘库
NE smartfusion2 /scratch/krydor/tmpspace/users/me/nc-vlog64/SmartFusion2
定义 COREAHBLITE_LIB ./COREAHBLITE_LIB
定义 presynth ./presynth
高密度变种
定义合成前的工作
定义 PROJECT_DIR /scratch/krydor/tmpspace/sqausers/me/3rd_party_simulators/Cadence/IGLOO2/
ENVM/M2GL050/envm_fic1_ser1_v/eNVM_fab_master
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_addrdec.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_defaultslavesm.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
视频博客/核心/coreahblite_masterstagev => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_slavearbiter.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
视频博客/核心/coreahblite_slavestagev => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_matrix2x16.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite.v => COREAHBLITE_LIB )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/CCC_0/SB_CCC_0_FCCC.v =>
前合成器)
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreConfigMaster/
2.0.101/rtl/vlog/core/coreconfigmaster.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreConfigP/4.0.100/rtl/
vlog/core/coreconfigp.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreResetP/5.0.103/rtl/
vlog/core/coreresetp_pcie_hotreset.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreResetP/5.0.103/rtl/
vlog/core/coreresetp.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/FABOSC_0/SB_FABOSC_0_OSC.v =>
前合成器)
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_HPMS/SB_HPMS.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/SB.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/SERDES_IF_0/
SB_top_SERDES_IF_0_SERDES_IF.v => 前合成器)
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/SB_top.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/testbench.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, + => presynth )
命令.csh
ncvlog +incdir+../../component/work/SB_top -cdslib ./cds.lib -hdlvar ./hdl.var -logfile
ncvlog.log -errormax 15 -update -linedebug
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_addrdec.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/
coreahblite_defaultslavesm.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_masterstag年龄
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_slavearbiter.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_slavestag年龄
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_matrix2x16.v
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite.v
../../组件/工作/SB/CCC_0/SB_CCC_0_FCCC.v
../../component/Actel/DirectCore/CoreConfigMaster/2.0.101/rtl/vlog/core/coreconfigmaster.v
../../component/Actel/DirectCore/CoreConfigP/4.0.100/rtl/vlog/core/coreconfigp.v
../../component/Actel/DirectCore/CoreResetP/5.0.103/rtl/vlog/core/coreresetp_pcie_hotreset.v
../../component/Actel/DirectCore/CoreResetP/5.0.103/rtl/vlog/core/coreresetp.v
../../组件/工作/SB/FABOSC_0/SB_FABOSC_0_OSC.v ../../组件/工作/SB_HPMS/SB_HPMS.v
../../组件/工作/SB/SB.v ../../组件/工作/SB_top/SERDES_IF_0/
SB_top_SERDES_IF_0_SERDES_IF.v
../../组件/工作/SB_top/SB_top.v ../../组件/工作/SB_top/testbench.v
ncelab -消息 -cdslib ./cds.lib -hdlvar ./hdl.var
-工作前合成器-日志file ncelab.log -errormax 15 -access +rwc -status presynth.testbench:模块
ncsim -消息-batch -cdslib ./cds.lib -hdlvar ./
hdl.var-logfile ncsim.log -errormax 15 -status presynth.testbench:模块
3.5 自动化(提出问题)
下面的脚本 file 转换 ModelSim run.do file进入配置 file需要使用 NCSim 运行模拟。
脚本 File 用法
perl cadence_parser.pl presynth_run.do postsynth_run.do
postlayout_run.do Microsemi_Family
Cadence_Precompiled_libraries 的位置
Cadence_parser.pl
/usr/bin/perl -w #!
#################################################### ##############################################
##################
#用法:perl questa_parser.pl presynth_run.do postsynth_run.do postlayout_run.do
Microsemi_Family Precompiled_Libraries_location#
#################################################### ##############################################
##################
使用 POSIX;
用严格;
我的($presynth,$postsynth,$postlayout,$family,$lib_location)= @ARGV;
&questa_parser($presynth, $family, $lib_location);
&questa_parser($postsynth, $family, $lib_location);
&questa_parser($postlayout, $family, $lib_location);
子 questa_parser {
我的 $ModelSim_run_do = $_[0];
我的$actel_family = $_[1];
我的 $lib_location = $_[2];
我的$州;
如果(-e“$ModelSim_run_do”)
{
打开FILE,”$ModelSim_run_do”);
我的@ModelSim_run_do =FILE>;
我的 $line;
if ( $ModelSim_run_do =~ m/(presynth)/)
{
`mkdir QUESTA_PRESYNTH`;
打开FILE,”>QUESTA_PRESYNTH/presynth_questa.do”);
$状态= $1;
} elsif ( $ModelSim_run_do =~ m/(postsynth)/)
{
`mkdir QUESTA_POSTSYNTH`;
打开FILE,”>QUESTA_POSTSYNTH/postsynth_questa.do”);
$状态= $1;
} elsif ( $ModelSim_run_do =~ m/(postlayout)/ )
{
`mkdir QUESTA_POSTLAYOUT`;
打开FILE,”>QUESTA_POSTLAYOUT/postlayout_questa.do”);
$状态= $1;
}其他
{
打印“错误的输入 file“\n”;
打印“#用法:perl questa_parser.pl presynth_run.do postsynth_run.do postlayout_run.do
\”图书馆_位置\”\n”;
}
foreach $line (@ModelSim_run_do)
{
#一般操作
$line =~ s/..\/designer.*simulation\///g;
$line =~ s/$state/$state\_questa/g;
#打印出FILE “$行\n”;
if ($line =~ m/vmap\s+.*($actel_family)/)
{
打印出FILE “vmap $actel_family \”$lib_location\”\n”;
} elsif ($line =~ m/vmap\s+(.*._LIB)/)
{
$line =~ s/..\/组件/..\/..\/组件/g;
打印出FILE “$行\n”;
} elsif ($line =~ m/vsim/)
{
$line =~ s/vsim/vsim -novopt/g;
打印出FILE “$行\n”;
}其他
{
打印出FILE “$行\n”;
}
}
逼近FILE);
关闭(输出FILE);
} 别的 {
打印“$ModelSim_run_do不存在。再次重新运行模拟\n”;
}
}
Cadence Xcelium 设置(微芯片登录)
您需要创建一个脚本 file 类似于ModelSim ME/ModelSim Pro ME run.do来运行Cadence Xcelium模拟器。按照以下步骤创建脚本 file 对于 Xcelium 或使用脚本 file 提供转换 ModelSim ME/ModelSim Pro ME run.do file进入配置 file需要使用 Xcelium 运行模拟。
4.1 环境变量(提出问题)
要运行Cadence Xcelium,请配置以下环境变量:
- LM_LICENSE_FILE:必须包含指向许可证的指针 file.
- cds_root:必须指向 Cadence Incisive Installation 的主目录位置。
- PATH:必须指向cds_root指向的tools目录下的bin位置(即
$cds_root/tools/bin/64bit(对于 64 位机器,$cds_root/tools/bin 对于 32 位机器
机器)。
在64位和32位操作系统之间切换时,可以通过三种方式设置模拟环境:
情况 1:PATH 变量
对于 64 位机器,设置 path = (install_dir/tools/bin/64bit $path)
对于 32 位机器,设置 path = (install_dir/tools/bin $path)
案例 2:使用 -64bit 命令行选项
在命令行中指定 -64bit 选项以调用 64 位可执行文件。
案例 3:设置 INCA_64BIT 或 CDS_AUTO_64BIT 环境变量
INCA_64BIT 变量被视为布尔值。您可以将此变量设置为任何值或 null
细绳。
setenv INCA_64BIT
重要: INCA_64BIT环境变量不会影响其他Cadence工具,例如IC工具。但是,对于 Incisive 工具,INCA_64BIT 变量会覆盖 CDS_AUTO_64BIT 环境变量的设置。如果设置了 INCA_64BIT 环境变量,则所有 Incisive 工具都以 64 位模式运行。
setenv CDS_AUTO_64BIT 包括:INCA
重要: 字符串 INCA 必须为大写。所有可执行文件必须在 2 位模式或 64 位模式下运行,请勿将变量设置为包含一个可执行文件,如下所示:
setenv CDS_AUTO_64BIT 包括:ncelab
其他 Cadence 工具(例如 IC 工具)也使用 CDS_AUTO_64BIT 环境变量来控制 32 位或 64 位可执行文件的选择。下表显示了如何设置 CDS_AUTO_64BIT 变量以在所有模式下运行 Incisive 工具和 IC 工具。
表 4-1。 CDS_AUTO_64BIT 变量
| CDS_AUTO_64BIT 变量 | 精辟的工具 | 集成电路工具 |
| setenv CDS_AUTO_64BIT ALL | 64 位 | 64 位 |
| setenv CDS_AUTO_64BIT 无 | 32 位 | 32 位 |
| setenv CDS_AUTO_64BIT 排除:ic_binary |
64 位 | 32 位 |
| setenv CDS_AUTO_64BIT 排除:INCA | 32 位 | 64 位 |
重要的: 所有 Incisive 工具必须在 32 位模式或 64 位模式下运行,不要使用 EXCLUDE 排除特定的可执行文件,如下所示:
setenv CDS_AUTO_64BIT 排除:ncelab
如果您设置 CDS_AUTO_64BIT 变量以排除 Incisive 工具 (setenv
CDS_AUTO_64BIT EXCLUDE:INCA),所有 Incisive 工具都在 32 位模式下运行。但是,那
-64位命令行选项覆盖环境变量。
以下配置 file帮助您管理数据并控制模拟工具和实用程序的操作:
- 库映射 file (cds.lib) 定义设计位置的逻辑名称。
- 库并将它们与物理目录名称相关联。
- 变量 file (hdl.var) 定义影响模拟工具和实用程序行为的变量。
4.2 下载编译好的库(提出问题)
从 Microsemi 下载 Cadence Xcelium 库 web地点。
4.3 创建 Xcelium 脚本 file (提出问题)
创建 run.do 的副本后 files,执行以下步骤以使用 Xcelium 脚本运行模拟 file.
- 创建一个 cds.lib file 它定义了哪些库可以访问以及它们位于哪里。
这 file 包含将库逻辑名称映射到其物理目录路径的语句。对于前ample,如果您正在运行 presynth 模拟,则 cds.lib file 可以写成如下代码块所示。
定义 presynth ./presynth
定义 COREAHBLITE_LIB ./COREAHBLITE_LIB
定义 smartfusion2 - 创建一个 hdl.var file 这是一个可选配置 file 包含配置变量,决定如何配置您的设计环境。这些包括:
– 用于指定编译器存储编译对象和其他派生数据的工作库的变量。
– 对于 Verilog,变量(LIB_MAP、 VIEW_MAP, WORK) 用于指定库和 views 在阐述器解析实例时进行搜索。
– 允许您定义编译器、阐述器和模拟器命令行选项和参数的变量。
如果是前合成器模拟 examp如上所示,假设我们有 3 个 RTL fileav、bv、testbench.v,需要分别编译成presynth、CORAHBLITE_LIB、presynth库。 HDL.var file 可以写成如下代码块所示。
定义合成前的工作
定义项目目录 files>
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/av => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/bv => COREAHBLITE_LIB )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/testbench.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, + => presynth ) - 编译设计 file使用 ncvlog 选项。
xmvlog +incdir+ –cdslib ./cds.lib –hdlvar ./hdl.var –logfile
ncvlog.log –update –linedebug av bv testbench.v - 使用 ncelab 详细阐述设计。阐述者根据设计中的实例化和配置信息构建设计层次结构,建立信号连接,并计算设计中所有对象的初始值。详细的设计层次结构存储在模拟快照中,它是模拟器用于运行模拟的设计的表示。
Xcelium –消息 –cdslib ./cds.lib –hdlvar ./hdl.var –logfile ncelab.log –errormax 15 –
访问+rwc –status worklib。 :模块
布局后仿真期间的详细阐述
在布局后模拟的情况下,首先是 SDF file 在详细阐述之前需要使用 ncsdfc 命令进行编译。
Xceliumfile名称>.sdf –输出file名称>.sdf.X
在详细阐述过程中,使用带有 –autosdf 选项的已编译 SDF 输出,如以下代码块所示。
xmelab -autosdf –消息 –cdslib ./cds.lib –hdlvar ./hdl.var –logfile ncelab.log –errormax
15 –access +rwc –status 工作库。 :模块-sdf_cmd_file ./
sdf_cmd_file
sdf_cmd_file 必须如以下代码块所示。
已编译_SDF_FILE =“ file>” - 使用 Xcelium 进行模拟。精心设计后,将创建一个模拟快照,该快照由 Xcelium 加载以进行模拟。这可以在批处理模式或 GUI 模式下运行。
xmsim –消息 –batch/-gui –cdslib ./cds.lib –hdlvar ./hdl.var –logfile xmsim.log –
errormax 15 –工作库状态。 :模块
Cadence Xcelium 设置
重要:全部 以上编译、阐述、模拟三个步骤可以放入shell脚本中 file 并来自命令行。可以使用 ncverilog 或 xrun 选项一步模拟设计,而不是使用这三个步骤,如以下代码块所示。
xmverilog +incdir+ -cdslib ./cds.lib –hdlvar ./hdl.var
file设计中使用的>
xrun +incdir+ -cdslib ./cds.lib –hdlvar ./hdl.var files
设计中使用>
4.3.1 已知问题(提出问题)
测试台解决方法
使用以下语句指定用户生成的测试平台或 Libero SoC 生成的默认测试平台中的时钟频率不适用于 Xcelium。
始终@(SYSCLK)
#(SYSCLK_PERIOD / 2.0) SYSCLK <= !SYSCLK;
修改如下以运行仿真:
总是#(SYSCLK_PERIOD / 2.0) SYSCLK = ~SYSCLK;
重要的: Xcelium 的编译库是特定于平台的(即 64 位库与 32 位平台不兼容,反之亦然)。
使用 MSS 和 SERDES 进行合成后和布局后仿真
在运行包含 MSS 模块的设计的后合成仿真或使用 SERDES 的设计的布局后仿真时,如果在详细设计过程中未指定 –libmap 选项,则 BFM 仿真将不起作用。这是因为在精化过程中,MSS 是从工作库解析的(因为默认绑定和工作库是 postsynth/post-layout),它只是一个固定函数。
必须按以下代码块所示编写 ncelab 命令,以解析 SmartFusion2 预编译库中的 MSS 块。
xmelab -libmap lib.map -libverbose -Message -access +rwc cfg1
和 lib.map file 必须如下:
配置cfg1;
设计;
默认库列表 smartfusion2 ;
结束配置
在查看工作库(即 postynth/post-layout)之前,必须解析 SmartFusion2 库中的任何单元。
在每个模拟(前合成器、后合成器和后布局)的精化过程中,默认情况下可以使用 –libmap 选项。这可以避免由于解析库中的实例而导致的模拟问题。
xmelab: *F,INTERR: 内部异常
此 ncelab 工具例外是对 SmartFusion2 和 IGLOO2 中包含 FDDR 的设计的警告
在使用 –libmap 选项进行合成后和布局后模拟期间。
重要的: 此问题已报告给 Cadence 支持团队 (SAR 52113)。
4.4秒ampTcl 和 shell 脚本 files(提出问题)
下列 files 是配置 file设置设计和 shell 脚本所需的 file 用于运行 Xcelium 命令。
光盘库
定义 smartfusion2 /scratch/krydor/tmpspace/users/me/nc-vlog64/SmartFusion2
定义 COREAHBLITE_LIB ./COREAHBLITE_LIB
定义 presynth ./presynth
高密度变种
定义合成前的工作
定义 PROJECT_DIR /scratch/krydor/tmpspace/sqausers/me/3rd_party_simulators/Cadence/IGLOO2/
ENVM/M2GL050/envm_fic1_ser1_v/eNVM_fab_master
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_addrdec.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_defaultslavesm.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
视频博客/核心/coreahblite_masterstagev => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_slavearbiter.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
视频博客/核心/coreahblite_slavestagev => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite_matrix2x16.v => COREAHBLITE_LIB )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/
vlog/core/coreahblite.v => COREAHBLITE_LIB )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/CCC_0/SB_CCC_0_FCCC.v =>
前合成器)
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreConfigMaster/
2.0.101/rtl/vlog/core/coreconfigmaster.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreConfigP/4.0.100/rtl/
vlog/core/coreconfigp.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreResetP/5.0.103/rtl/
vlog/core/coreresetp_pcie_hotreset.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/Actel/DirectCore/CoreResetP/5.0.103/rtl/
vlog/core/coreresetp.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/FABOSC_0/SB_FABOSC_0_OSC.v =>
前合成器)
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_HPMS/SB_HPMS.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB/SB.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/SERDES_IF_0/
SB_top_SERDES_IF_0_SERDES_IF.v => 前合成器)
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/SB_top.v => presynth )
定义 LIB_MAP ( $LIB_MAP, ${PROJECT_DIR}/component/work/SB_top/testbench.v => presynth )
DEFINE LIB_MAP ( $LIB_MAP, + => presynth )
命令.csh
ncvlog +incdir+../../component/work/SB_top -cdslib ./cds.lib -hdlvar ./hdl.var -logfile
ncvlog.log -errormax 15 -update -linedebug
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_addrdec.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/
coreahblite_defaultslavesm.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_masterstag年龄
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_slavearbiter.v
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_slavestag年龄
../../组件/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite_matrix2x16.v
../../component/Actel/DirectCore/CoreAHBLite/4.0.100/rtl/vlog/core/coreahblite.v
../../组件/工作/SB/CCC_0/SB_CCC_0_FCCC.v
../../component/Actel/DirectCore/CoreConfigMaster/2.0.101/rtl/vlog/core/coreconfigmaster.v
../../component/Actel/DirectCore/CoreConfigP/4.0.100/rtl/vlog/core/coreconfigp.v
../../component/Actel/DirectCore/CoreResetP/5.0.103/rtl/vlog/core/coreresetp_pcie_hotreset.v
../../component/Actel/DirectCore/CoreResetP/5.0.103/rtl/vlog/core/coreresetp.v
../../组件/工作/SB/FABOSC_0/SB_FABOSC_0_OSC.v ../../组件/工作/SB_HPMS/SB_HPMS.v
../../组件/工作/SB/SB.v ../../组件/工作/SB_top/SERDES_IF_0/
SB_top_SERDES_IF_0_SERDES_IF.v
../../组件/工作/SB_top/SB_top.v ../../组件/工作/SB_top/testbench.v
ncelab -消息 -cdslib ./cds.lib -hdlvar ./hdl.var
-工作前合成器-日志file ncelab.log -errormax 15 -access +rwc -status presynth.testbench:模块
ncsim -消息-batch -cdslib ./cds.lib -hdlvar ./
hdl.var-logfile ncsim.log -errormax 15 -status presynth.testbench:模块
4.5 自动化(微芯片登录)
下面的脚本 file 转换 ModelSim run.do file进入配置 file需要使用 Xcelium 运行模拟。
脚本 File 用法
perl cadence_parser.pl presynth_run.do postsynth_run.do
postlayout_run.do Microsemi_Family
Cadence_Precompiled_libraries 的位置
Cadence_parser.pl
/usr/bin/perl -w #!
#################################################### ##############################################
##################
#用法:perl questa_parser.pl presynth_run.do postsynth_run.do postlayout_run.do
Microsemi_Family Precompiled_Libraries_location#
#################################################### ##############################################
##################
使用 POSIX;
用严格;
我的($presynth,$postsynth,$postlayout,$family,$lib_location)= @ARGV;
&questa_parser($presynth, $family, $lib_location);
&questa_parser($postsynth, $family, $lib_location);
&questa_parser($postlayout, $family, $lib_location);
子 questa_parser {
我的 $ModelSim_run_do = $_[0];
我的$actel_family = $_[1];
我的 $lib_location = $_[2];
我的$州;
如果(-e“$ModelSim_run_do”)
{
打开FILE,”$ModelSim_run_do”);
我的@ModelSim_run_do =FILE>;
我的 $line;
if ( $ModelSim_run_do =~ m/(presynth)/)
{
`mkdir QUESTA_PRESYNTH`;
打开FILE,”>QUESTA_PRESYNTH/presynth_questa.do”);
$状态= $1;
} elsif ( $ModelSim_run_do =~ m/(postsynth)/)
{
`mkdir QUESTA_POSTSYNTH`;
打开FILE,”>QUESTA_POSTSYNTH/postsynth_questa.do”);
$状态= $1;
} elsif ( $ModelSim_run_do =~ m/(postlayout)/ )
{
`mkdir QUESTA_POSTLAYOUT`;
打开FILE,”>QUESTA_POSTLAYOUT/postlayout_questa.do”);
$状态= $1;
}其他
{
打印“错误的输入 file“\n”;
打印“#用法:perl questa_parser.pl presynth_run.do postsynth_run.do postlayout_run.do
\”图书馆_位置\”\n”;
}
foreach $line (@ModelSim_run_do)
{
#一般操作
$line =~ s/..\/designer.*simulation\///g;
$line =~ s/$state/$state\_questa/g;
#打印出FILE “$行\n”;
if ($line =~ m/vmap\s+.*($actel_family)/)
{
打印出FILE “vmap $actel_family \”$lib_location\”\n”;
} elsif ($line =~ m/vmap\s+(.*._LIB)/)
{
$line =~ s/..\/组件/..\/..\/组件/g;
打印出FILE “$行\n”;
} elsif ($line =~ m/vsim/)
{
$line =~ s/vsim/vsim -novopt/g;
打印出FILE “$行\n”;
}其他
{
打印出FILE “$行\n”;
}
}
逼近FILE);
关闭(输出FILE);
} 别的 {
打印“$ModelSim_run_do不存在。再次重新运行模拟\n”;
}
}
西门子 QuestaSim 设置/ModelSim 设置(提出问题)
运行.do file由 Libero SoC 生成,用于使用 ModelSim Microsemi 版本进行仿真,只需进行一次更改即可用于使用 QuestaSim/ModelSim SE/DE/PE 进行仿真。在 ModelSim ME/ModelSim Pro ME run.do 中 file,需要修改预编译库位置。
重要的:
默认情况下,ModelSim Pro ME 以外的仿真工具会在仿真过程中执行设计优化,这可能会影响仿真工件(例如设计对象和输入激励)的可见性。
使用详细的自检测试平台,这通常有助于减少复杂模拟的模拟运行时间。但是,默认优化可能并不适合所有仿真,特别是在您希望使用波形窗口以图形方式检查仿真结果的情况下。
为了解决此优化引起的问题,您必须在仿真期间添加适当的命令和相关参数,以恢复设计的可见性。有关特定于工具的命令,请参阅所用模拟器的文档。
5.1 环境变量(提出问题)
以下是所需的环境变量。
- LM_LICENSE_FILE:必须包含许可证的路径 file.
- MODEL_TECH:必须标识 QuestaSim 安装的主目录位置的路径。
- PATH:必须指向MODEL_TECH指向的可执行位置。
5.2 为 Mentor QuestaSim 转换 run.do (提出问题)
运行.do fileLibero SoC 生成的用于使用 ModelSim Microsemi 版本进行仿真的模型只需进行一次更改即可用于使用 QuestaSim/ModelSim_SE 进行仿真。
重要:全部 使用 QuestaSim 模拟的设计必须包含 -novopt
run.do 脚本中的选项以及 vsim 命令 files.
5.3 下载编译好的库(提出问题)
从 Microsemi 下载 Mentor Graphics QuestaSim 的库 web地点。
Synopsys VCS 设置(提出问题)
Microsemi 推荐的流程依赖于 VCS 中的精化和编译流程。该文档包含一个脚本 file 使用 run.do 脚本 file由 Libero SoC 生成并生成设置 fileVCS 仿真所需的 s。剧本 file 使用 run.do file 执行以下操作。
- 创建库映射 file,这是使用 synopsys_sim.setup 完成的 file 位于运行 VCS 模拟的同一目录中。
- 创建 shell 脚本 file 使用 VCS 详细阐述和编译您的设计。
6.1 环境变量(提出问题)
根据您的设置为 VCS 设置适当的环境变量。根据 VCS 文档,所需的环境变量是:
- LM_LICENSE_FILE:必须包含指向许可证服务器的指针。
- VCS_HOME:必须指向 VCS 安装的主目录位置。
- PATH:必须包含指向 VCS_HOME 目录下的 bin 目录的指针。
6.2 下载编译好的库(提出问题)
从 Microsemi 下载 Synopsys VCS 库 web地点。
6.3 VCS仿真脚本 File (提出问题)
设置 VCS 并生成设计和不同的 run.do 后 file如果您使用 Libero SoC,您必须:
- 创建库映射 file synopsys_sim.setup;这 file 包含指向设计要使用的所有库的位置的指针。
重要: file 名称不得更改,并且必须位于运行模拟的同一目录中。这是一个前任amp乐对于这样一个 file 用于综合前模拟。
工作 > 过错
智能融合2:
前合成器:./前合成器
默认:./工作 - 细化不同的设计 files,包括测试平台,使用 VCS 中的 vlogan 命令。这些命令可能包含在 shell 脚本中 file. 以下是前任amp详细说明 rtl.v 中定义的设计及其定义的测试平台所需的命令文件
测试平台.v.
vlogan +v2k -work presynth rtl.v
vlogan +v2k -work presynth testbench.v - 使用以下命令使用 VCS 编译设计。
vcs –sim_res=1fs presynth.testbench
注: 为了正确的功能仿真,仿真的时序分辨率必须设置为 1fs。 - 编译设计后,使用以下命令开始仿真。
./simv - 对于反注释仿真,VCS 命令必须如以下代码块所示。
vcs postlayout.testbench –sim_res=1fs –sdf max: 。
名称>: file 路径> –gui –l postlayout.log
6.4 限制/例外(提出问题)
以下是 Synopsys VCS 设置的限制/例外。
- VCS 仿真只能针对 Libero SoC 的 Verilog 项目运行。 VCS 模拟器具有严格的 VHDL 语言要求,Libero SoC 自动生成的 VHDL 无法满足这些要求 files.
- 您必须在 Verilog 测试平台中有一个 $finish 语句,以便在需要时停止仿真。
重要:何时 模拟在GUI模式下运行,运行时间可以在GUI中指定。
6.5秒ampTcl 和 Shell 脚本 Files(提出问题)
以下 Perl 自动生成 synopsys_sim.setup file 以及相应的shell脚本 file需要详细阐述、编译和模拟设计。
如果设计使用 MSS,请复制 test.vec file 位于 Libero SoC 项目的仿真文件夹中到 VCS 仿真文件夹中。以下部分包含amp乐跑 fileLibero SoC生成的s,包括相应的库映射和shell脚本 fileVCS 仿真所需的 s。
6.5.1 预合成(提出问题)
Presynth_run.do
悄悄设置ACTELLIBNAME SmartFusion2
悄悄地设置 PROJECT_DIR “/sqa/users/me/VCS_Tests/Test_DFF”
如果 {[file 存在 presynth/_info]} {
echo“信息:模拟库 presynth 已经存在”
} 别的 {
vlib 前合成器
}
vmap 前合成器 前合成器
vmap SmartFusion2 “/captures/lin/11_0_0_23_11prod/lib/ModelSim/precompiled/vlog/smartfusion2”
vlog -work presynth“${PROJECT_DIR}/component/work/SD1/SD1.v”
vlog “+incdir+${PROJECT_DIR}/stimulus” -work presynth “${PROJECT_DIR}/stimulus/SD1_TB1.v”
vsim -L SmartFusion2 -L presynth -t 1fs presynth.SD1_TB1
添加波形/SD1_TB1/*
添加日志-r /*
运行1000ns
presynth_main.csh
/bin/csh -f #!/bin/csh -f
设置 PROJECT_DIR = “/sqa/users/Me/VCS_Tests/Test_DFF”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k -work presynth “${PROJECT_DIR}/component/
工作/SD1/SD1.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k “+incdir+${PROJECT_DIR}/stimulus” -work
presynth“${PROJECT_DIR}/stimulus/SD1_TB1.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs presynth.SD1_TB1 -lcompile.log
./simv -l 运行.log
Synopsys_sim.setup
工作 > 默认
SmartFusion2 : /VCS/SmartFusion2
前合成器:./前合成器
默认:./工作
6.5.2 后综合(提出问题)
postsynth_run.do
悄悄设置ACTELLIBNAME SmartFusion2
悄悄地设置 PROJECT_DIR “/sqa/users/Me/VCS_Tests/Test_DFF”
如果 {[file 存在 postsynth/_info]} {
echo“信息:模拟库postsynth已经存在”
} 别的 {
vlib 后合成器
}
vmap 后合成 后合成
vmap SmartFusion2 “//idm/captures/pc/11_0_1_12_g4x/Designer/lib/ModelSim/precompiled/vlog/
智能融合2”
vlog -work postsynth “${PROJECT_DIR}/synthesis/SD1.v”
vlog“+incdir+${PROJECT_DIR}/stimulus”-work postsynth“${PROJECT_DIR}/stimulus/SD1_TB1.v”
vsim -L SmartFusion2 -L postsynth -t 1fs postsynth.SD1_TB1
添加波形/SD1_TB1/*
添加日志-r /*
运行1000ns
记录SD1_TB1/*
出口
Postsynth_main.csh
/bin/csh -f #!/bin/csh -f
设置 PROJECT_DIR = “/sqa/users/Me/VCS_Tests/Test_DFF”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k -work postsynth “${PROJECT_DIR}/synthesis/
SD1.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k “+incdir+${PROJECT_DIR}/stimulus” -work
后合成“${PROJECT_DIR}/stimulus/SD1_TB1.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs postsynth.SD1_TB1 -lcompile.log
./simv -l 运行.log
Synopsys_sim.setup
工作 > 默认
SmartFusion2 : /VCS/SmartFusion2
后合成器:./后合成器
默认:./工作
6.5.3 布局后(提出问题)
postlayout_run.do
悄悄设置ACTELLIBNAME SmartFusion2
悄悄设置 PROJECT_DIR “E:/ModelSim_Work/Test_DFF”
如果 {[file 存在../designer/SD1/simulation/postlayout/_info]} {
echo“信息:模拟库../designer/SD1/simulation/postlayout已存在”
} 别的 {
vlib ../designer/SD1/simulation/postlayout
}
vmap postlayout ../designer/SD1/simulation/postlayout
vmap SmartFusion2 “//idm/captures/pc/11_0_1_12_g4x/Designer/lib/ModelSim/precompiled/vlog/
智能融合2”
vlog -work postlayout“${PROJECT_DIR}/designer/SD1/SD1_ba.v”
vlog“+incdir+${PROJECT_DIR}/stimulus”-工作后期布局“${PROJECT_DIR}/stimulus/SD1_TB1.v”
vsim -L SmartFusion2 -L postlayout -t 1fs -sdfmax /SD1_0=${PROJECT_DIR}/designer/SD1/
SD1_ba.sdf postlayout.SD1_TB1
添加波形/SD1_TB1/*
添加日志-r /*
运行1000ns
Postlayout_main.csh
/bin/csh -f #!/bin/csh -f
设置 PROJECT_DIR = “/VCS_Tests/Test_DFF”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k -work postlayout“${PROJECT_DIR}/
设计师/SD1/SD1_ba.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k “+incdir+${PROJECT_DIR}/stimulus” -work
布局后“${PROJECT_DIR}/stimulus/SD1_TB1.v”
/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs postlayout.SD1_TB1 -sdf
max:SD1_TB1.SD1_0:${PROJECT_DIR}/designer/SD1/SD1_ba.sdf -l compile.log
./simv -l 运行.log
Synopsys_sim.setup
工作 > 默认
SmartFusion2 : /VCS/SmartFusion2
后布局:./后布局
默认:./workVCS
6.6 自动化(提出问题)
该流程可以使用以下 Perl 脚本自动化 file 转换 ModelSim run.do files 到 VCS 兼容的 shell 脚本中 files,在Libero SoC仿真目录中创建适当的目录,然后运行仿真。
运行脚本 file 使用以下语法。
perl vcs_parse.pl presynth_run.do postsynth_run.do postlayout_run.do
Vcs_parse_pl
/usr/bin/perl -w #!
#################################################### ##############################
#
#用法:perl vcs_parse.pl presynth_run.do postsynth_run.do postlayout_run.do
#
#################################################### ##############################
我的($presynth,$postsynth,$postlayout)= @ARGV;
if(system(“mkdir VCS_Presynth”)) {打印“mkdir 失败:\n”;}
if(system(“mkdir VCS_Postsynth”)) {打印“mkdir 失败:\n”;}
if(system(“mkdir VCS_Postlayout”)) {打印“mkdir 失败:\n”;}
chdir(VCS_Presynth);
`cp ../$ARGV[0] .` ;
&parse_do($presynth,”presynth”);
chdir(“../”);
chdir(VCS_Postsynth);
`cp ../$ARGV[1] .` ;
&parse_do($postsynth,”postsynth”);
chdir(“../”);
chdir(VCS_Postlayout);
`cp ../$ARGV[2] .` ;
&parse_do($postlayout,”postlayout”);
chdir(“../”);
子 parse_do {
我的$vlog =“/cad_design/tools/vcs.dir/E-2011.03/bin/vlogan +v2k”;
我的%LIB = ();
我的$file = $_[0] ;
我的 $state = $_[1];
打开FILE,”$file”) ||死“打不开 File 原因可能是:$!”;
if ( $state eq “presynth” )
{
打开(OUT1,“> presynth_main.csh”)|| die“无法创建命令 File 原因可能是:$!”;
}
elsif ( $state eq “postsynth” )
{
打开(OUT1,”>postsynth_main.csh”)|| die“无法创建命令 File 原因可能是:$!”;
}
elsif ( $state eq “postlayout” )
{
打开(OUT1,”>postlayout_main.csh”) || die“无法创建命令 File 原因可能是:$!”;
}
别的
{
print“模拟状态丢失\n”;
}
打开(OUT2,”>synopsys_sim.setup”) || die“无法创建命令 File 原因可能是:$!”;
#.csh file
打印 OUT1 “#!/bin/csh -f\n\n\n” ;
#设置 FILE
打印 OUT2“工作 > 默认\n”;
打印 OUT2“SmartFusion2:/sqa/users/Aditya/VCS/SmartFusion2\n”;
而($行=FILE>)
{
Synopsys VCS 设置
if ($line =~ m/悄悄设置 PROJECT_DIR\s+\”(.*?)\”/)
{
打印 OUT1“设置 PROJECT_DIR = \”$1\”\n\n\n” ;
}
elsif ( $line =~ m/vlog.*\.v\”/ )
{
if ($line =~ m/\s+(\w*?)\_LIB/)
{
#print“\$1=$1\n”;
$temp = “$1”.”_LIB”;
#print“Temp = $temp \n”;
$LIB{$temp}++;
}
chomp($line);
$line =~ s/^vlog/$vlog/ ;
$line =~ s/ //g;
打印 OUT1 “$line\n”;
}
elsif ( ($line =~ m/vsim.*presynth\.(.*)/) || ($line =~ m/vsim.*postsynth\.(.*)/) || ($line
=~ m/vsim.*postlayout\.(.*)/) )
{
$tb = $1 ;
$tb =~ s/ //g;
咀嚼($TB);
#print“TB名称:$tb\n”;
if ( $line =~ m/sdf(.*)\.sdf/)
{
chomp($line);
$行= $1;
#print“LINE:$line\n”;
if ($line =~ m/max/)
{
$line =~ s/max \/// ;
$line =~ s/=/:/;
打印 OUT1 “\n\n/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs postlayout.$tb -sdf
max:$tb.$line.sdf -lcompile.log\n” ;
}
elsif ($line =~ 米/分钟/)
{
$line =~ s/min \/// ;
$line =~ s/=/:/;
打印 OUT1 “\n\n/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs postlayout.$tb -sdf
分钟:$tb.$line.sdf -lcompile.log\n”;
}
elsif ($line =~ m/typ/)
{
$line =~ s/typ \/// ;
$line =~ s/=/:/;
打印 OUT1 “\n\n/cad_design/tools/vcs.dir/E-2011.03/bin/vcs -sim_res=1fs postlayout.$tb -sdf
典型:$tb.$line.sdf -lcompile.log\n”;
}
#-sdfmax /M3_FIC32_0=${PROJECT_DIR}/designer/M3_FIC32/M3_FIC32_ba.sdf — ModelSim SDF 格式
#$sdf =“-sdf max:testbench.M3_FIC32_0:${PROJECT_DIR}/designer/M3_FIC32/M3_FIC32_ba.sdf”; -VCS
SDF格式
}
}
}
打印
输出1“\n\n”
;
if
( $state eq “presynth”
)
{
打印
OUT2“前合成器
: ./presynth\n”
;
打印
OUT1 “/cad_design/tools/vcs.dir/E-2011.03/bin/vcs
-sim_res=1fs presynth.$tb -l
编译.log\n”
;
}
否则
( $state eq “postsynth”
)
{
打印
OUT2“后合成器
: ./postsynth\n”
;
打印
OUT1 “/cad_design/tools/vcs.dir/E-2011.03/bin/vcs
-sim_res=1fs postsynth.$tb -l
编译.log\n”
;
}
否则
( $state eq “布局后”
)
{
打印 OUT2 “postlayout : ./postlayout\n” ;
}
别的
{
print“模拟状态丢失\n”;
}
foreach $i (键 %LIB)
{
#print“键:$i 值:$LIB{$i}\n”;
打印 OUT2 “$i : ./$i\n” ;
}
打印 OUT1 “\n\n” ;
打印 OUT1 “./simv -l run.log\n” ;
打印 OUT2“默认:./work\n”;
逼近FILE;
关闭 OUT1;
关闭 OUT2;
}
修订记录 (微芯片登录
修订历史记录描述了文档中实施的更改。变化
按修订列出,从最新出版物开始。
| 修订 | 日期 | 描述 |
| A | 12/2023 | 本次修订有以下变化: • 文档转换为Microchip 模板。初步修订。 • 更新了第5 节“Siemens QuestaSim 设置/ModelSim 设置”,添加了一条新注释,解释了仿真和优化过程中对可见性的影响。 |
微芯片 FPGA 支持
Microchip FPGA 产品组为其产品提供各种支持服务,包括客户服务、客户技术支持中心、 web网站和全球销售办事处。
建议客户在联系支持人员之前先访问 Microchip 在线资源,因为他们的疑问很可能已经得到解答。
通过以下方式联系技术支持中心 web网站 www.microchip.com/support. 提及 FPGA 器件部件号,选择合适的案例类别,然后上传设计 files 同时创建技术支持案例。
联系客户服务以获得非技术产品支持,例如产品定价、产品升级、更新信息、订单状态和授权。
- 从北美拨打 800.262.1060
- 从世界其他地方拨打 650.318.4460
- 传真,来自世界各地,650.318.8044
微芯信息
微芯片 Web地点
Microchip 通过以下方式提供在线支持 web网站 www.microchip.com/。 这 web网站用于制作 files 和信息易于客户获取。可用的内容包括:
- 产品支持 – 数据表和勘误表、应用说明和 samp文件程序、设计资源、用户指南和硬件支持文档、最新软件版本和存档软件
- 一般技术支持——常见问题 (FAQ)、技术支持请求、在线讨论组、Microchip 设计合作伙伴计划成员列表
- Microchip 业务 – 产品选择和订购指南、最新的 Microchip 新闻稿、研讨会和活动列表、Microchip 销售办事处、分销商和工厂代表列表
产品变更通知服务
Microchip 的产品变更通知服务有助于让客户了解 Microchip 产品的最新信息。 每当有与特定产品系列或感兴趣的开发工具相关的更改、更新、修订或勘误表时,订阅者都会收到电子邮件通知。
如需注册,请访问 www.microchip.com/pcn 并按照注册说明进行操作。
客户支持
Microchip 产品的用户可以通过多种渠道获得帮助:
- 经销商或代表
- 当地销售办事处
- 嵌入式解决方案工程师 (ESE)
- 技术支援
客户应联系其分销商、代表或 ESE 寻求支持。当地销售办事处也为客户提供帮助。本文档中包含销售办事处和地点的列表。
技术支持可通过 web网站位于: www.microchip.com/support
Microchip 设备代码保护功能
请注意 Microchip 产品的代码保护功能的以下详细信息:
- Microchip 产品符合其特定 Microchip 数据手册中所包含的规格。
- Microchip 相信,其产品系列在按照预期方式、符合操作规范和在正常条件下使用时是安全的。
- Microchip 重视并积极保护其知识产权。 严禁尝试违反 Microchip 产品的代码保护功能,这可能违反《数字千年版权法》。
- Microchip 或任何其他半导体制造商都无法保证其代码的安全性。 代码保护并不意味着我们保证产品“牢不可破”。
代码保护在不断发展。 Microchip 致力于不断改进我们产品的代码保护功能。
法律声明
本出版物及其信息仅可用于 Microchip 产品,包括设计、测试 Microchip 产品并将其与您的应用程序集成。 以任何其他方式使用此信息均违反这些条款。 有关设备应用程序的信息仅为您提供方便而提供,可能会被更新所取代。 您有责任确保您的应用程序符合您的规范。 如需更多支持,请联系您当地的 Microchip 销售办事处,或通过以下网址获取更多支持 www.microchip.com/en-us/support/design-help/client-support-services.
本信息由 MICROCHIP “按原样”提供。MICROCHIP 不作任何明示或暗示、书面或口头、法定或其他形式的陈述或保证,包括但不限于任何不侵权、适销性和适用于特定用途的默示保证,或与其状况、质量或性能相关的保证。
在任何情况下,对于与该信息或其使用有关的任何间接、特殊、惩罚性、偶然或后果性损失、损害、成本或费用,无论其原因如何,即使 MICROCHIP 已被告知发生此类损失的可能性或此类损害是可预见的,MICROCHIP 均不承担任何责任。在法律允许的最大范围内,MICROCHIP 对以任何方式与该信息或其使用有关的所有索赔的总赔偿责任不得超过您为该信息直接向 MICROCHIP 支付的费用(如有)。
在生命支持和/或安全应用中使用 Microchip 设备的风险完全由买方承担,买方同意为 Microchip 辩护、赔偿并免除其因此类使用而导致的任何和所有损害、索赔、诉讼或费用。除非另有说明,否则不会以任何方式(隐含或以其他方式)转让任何 Microchip 知识产权许可。
商标
Microchip 名称和徽标、Microchip 徽标、Adaptec、AVR、AVR 徽标、AVR Freaks、BesTime、BitCloud、CryptoMemory、CryptoRF、dsPIC、flexPWR、HELDO、IGLOO、JukeBlox、KeeLoq、Kleer、LANCheck、LinkMD、maXStylus、maXTouch、 MediaLB、megaAVR、Microsemi、Microsemi 徽标、MOST、MOST 徽标、MPLAB、OptoLyzer、PIC、picoPower、PICSTART、PIC32 徽标、PolarFire、Prochip Designer、QTouch、SAM-BA、SenGenuity、SpyNIC、SST、SST 徽标、SuperFlash、Symmetricom 、SyncServer、Tachyon、TimeSource、tinyAVR、UNI/O、Vectron 和 XMEGA 是 Microchip Technology Incorporated 在美国和其他国家/地区的注册商标。
AgileSwitch、APT、ClockWorks、嵌入式控制解决方案公司、EtherSynch、Flashtec、Hyper Speed Control、HyperLight Load、Libero、motorBench、mTouch、Powermite 3、Precision Edge、ProASIC、ProASIC Plus、ProASIC Plus 徽标、Quiet-Wire、SmartFusion、 SyncWorld、Temux、TimeCesium、TimeHub、TimePictra、TimeProvider、TrueTime 和 ZL 是 Microchip Technology Incorporated 在美国的注册商标
相邻键抑制、AKS、模拟数字时代、任何电容器、AnyIn、AnyOut、增强型开关、BlueSky、BodyCom、Clockstudio、CodeGuard、CryptoAuthentication、CryptoAutomotive、CryptoCompanion、CryptoController、dsPICDEM、dsPICDEM.net、动态平均匹配, DAM, ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, 在线串行编程, ICSP, INICnet, 智能并联, IntelliMOS, 芯片间连接, JitterBlocker, 显示旋钮, KoD, maxCrypto, maxView、memBrain、Mindi、MiWi、MPASM、MPF、MPLAB 认证徽标、MPLIB、MPLINK、MultiTRAK、NetDetach、Omniscient 代码生成、PICDEM、PICDEM.net、
PICkit、PICtail、PowerSmart、PureSilicon、QMatrix、REAL ICE、Ripple Blocker、RTAX、RTG4、SAMICE、串行四路 I/O、simpleMAP、SimpliPHY、SmartBuffer、SmartHLS、SMART-IS、storClad、SQI、SuperSwitcher、
SuperSwitcher II、Switchtec、SynchroPHY、总耐久性、可信时间、TSHARC、USBCheck、VariSense、VectorBlox、VeriPHY、 ViewSpan、WiperLock、XpressConnect 和 ZENA 是 Microchip Technology Incorporated 的商标
在美国和其他国家。
SQTP 是美国 Microchip Technology Incorporated 的服务标志
Adaptec 徽标、Frequency on Demand、Silicon Storage Technology 和 Symmcom 是 Microchip Technology Inc. 在其他国家/地区的注册商标。
GestIC 是 Microchip Technology Inc. 的子公司 Microchip Technology Germany II GmbH & Co. KG 在其他国家的注册商标。
本文提及的所有其他商标均属于其各自公司的财产。
© 2023,Microchip Technology Incorporated 及其子公司。 版权所有。
ISBN: 978-1-6683-3694-6
质量管理体系
有关 Microchip 质量管理体系的信息,请访问 www.microchip.com/quality。
| 美洲 | 亚太 | 亚太 | 欧洲 |
| 公司办公室 西钱德勒大道 2355 号 亚利桑那州钱德勒 85224-6199 电话: 480-792-7200 传真: 480-792-7277 技术支援: www.microchip.com/support Web 地址: www.microchip.com 亚特兰大 乔治亚州德卢斯 电话: 678-957-9614 传真: 678-957-1455 德克萨斯州奥斯汀 电话: 512-257-3370 波士顿 马萨诸塞州韦斯特伯勒 电话: 774-760-0087 传真: 774-760-0088 芝加哥 伊利诺伊州伊塔斯卡 电话: 630-285-0071 传真: 630-285-0075 达拉斯 德克萨斯州艾迪生 电话: 972-818-7423 传真: 972-818-2924 底特律 密歇根州诺维 电话: 248-848-4000 德克萨斯州休斯顿 电话: 281-894-5983 印第安纳波利斯 印第安纳州诺布尔斯维尔 电话: 317-773-8323 传真: 317-773-5453 电话: 317-536-2380 洛杉矶 加利福尼亚州米申维耶荷 电话: 949-462-9523 传真: 949-462-9608 电话: 951-273-7800 北卡罗来纳州罗利 电话: 919-844-7510 纽约州纽约市 电话: 631-435-6000 加利福尼亚州圣何塞 电话: 408-735-9110 电话: 408-436-4270 加拿大 – 多伦多 电话: 905-695-1980 传真: 905-695-2078 |
澳大利亚 – 悉尼 电话:61-2-9868-6733 中国 – 北京 电话:86-10-8569-7000 中国 – 成都 电话:86-28-8665-5511 中国 – 重庆 电话:86-23-8980-9588 中国 – 东莞 电话:86-769-8702-9880 中国 – 广州 电话:86-20-8755-8029 中国 – 杭州 电话:86-571-8792-8115 中国 - 香港特别行政区 电话:852-2943-5100 中国 – 南京 电话:86-25-8473-2460 中国 – 青岛 电话:86-532-8502-7355 中国 – 上海 电话:86-21-3326-8000 中国 – 沉阳 电话:86-24-2334-2829 中国 – 深圳 电话:86-755-8864-2200 中国 – 苏州 电话:86-186-6233-1526 中国 – 武汉 电话:86-27-5980-5300 中国 – 西安 电话:86-29-8833-7252 中国 – 厦门 电话:86-592-2388138 中国 – 珠海 电话:86-756-3210040 |
印度 – 班加罗尔 电话:91-80-3090-4444 印度 - 新德里 电话:91-11-4160-8631 印度 – 浦那 电话:91-20-4121-0141 日本 - 大阪 电话:81-6-6152-7160 日本 – 东京 电话:81-3-6880-3770 韩国——大邱 电话:82-53-744-4301 韩国 – 首尔 电话:82-2-554-7200 马来西亚 – 吉隆坡 电话:60-3-7651-7906 马来西亚 – 槟城 电话:60-4-227-8870 菲律宾 – 马尼拉 电话:63-2-634-9065 新加坡 电话:65-6334-8870 台湾 – 新竹 电话:886-3-577-8366 台湾 – 高雄 电话:886-7-213-7830 台湾 – 台北 电话:886-2-2508-8600 泰国 – 曼谷 电话:66-2-694-1351 越南——胡志明 电话:84-28-5448-2100 |
奥地利 - 韦尔斯 电话:43-7242-2244-39 传真:43-7242-2244-393 丹麦——哥本哈根 电话:45-4485-5910 传真:45-4485-2829 芬兰 – 埃斯波 电话:358-9-4520-820 法国——巴黎 Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 德国——加兴 电话:49-8931-9700 德国 – 汉 电话:49-2129-3766400 德国——海尔布隆 电话:49-7131-72400 德国——卡尔斯鲁厄 电话:49-721-625370 德国——慕尼黑 Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 德国——罗森海姆 电话:49-8031-354-560 以色列 – 拉阿纳纳 电话:972-9-744-7705 意大利——米兰 电话:39-0331-742611 传真:39-0331-466781 意大利——帕多瓦 电话:39-049-7625286 荷兰 – Drunen 电话:31-416-690399 传真:31-416-690340 挪威 – 特隆赫姆 电话:47-72884388 波兰 – 华沙 电话:48-22-3325737 罗马尼亚 - 布加勒斯特 Tel: 40-21-407-87-50 西班牙 – 马德里 Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 瑞典——哥德堡 Tel: 46-31-704-60-40 瑞典——斯德哥尔摩 电话:46-8-5090-4654 英国 – 沃金厄姆 电话:44-118-921-5800 传真:44-118-921-5820 |
© 2023 Microchip Technology Inc. 及其子公司
DS50003627A –
文件/资源
![]() |
MICROCHIP Libero SoC 仿真库软件 [pdf] 用户指南 DS50003627A, Libero SoC 仿真库软件, SoC 仿真库软件, 仿真库软件, 库软件, 软件 |




