Clisoft SOS与CAD系统集成
Clisoft SOS与CAD系统集成
以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。
与Keysight ADS集成
更新SOS客户端配置文件sos.cfg
,以包含支持ADS的模板:$CLIOSOFT_DIR/adaptors/ads/sos.cfg
- 如果所有项目都使用Keysight ADS,请将模板追加到站点自定义文件
$sosd_config_dir/sos.cfg
或系统默认文件$CLIOSOFT_DIR/data/sos.cfg
。 - 如果某些项目使用其他设计工具,请更新
server_name.rep/project_name/setup
中每个ADS项目的特定sos.cfg
文件。 - 对于Windows系统上的工作区,请更新
sos.win.cfg
文件而不是sos.cfg
。
例如
cat $CLIOSOFT_DIR/adaptors/ads/sos.cfg >> path_to_repository/setup/sos.cfg
与Cadence Virtuoso集成
将SOS与Cadence Virtuoso软件集成需要更改三个Virtuoso配置文件。
文件 | 描述 |
---|---|
.cdsinit | Virtuoso 启动文件 |
cdsLibMgr.il | Cadence库管理器启动文件 |
cdsinfo.tag | 包含设计管理器(DM)工具配置的Cadence信息文件 |
将以上三个文件以及cds.lib
文件包含在SOS项目中。这样做可以确保文件被自动复制或链接到每个用户的工位目录中,确保每个人都有正确版本的文件。一个典型的结构如下:
.
├── docs # 规格和其他文档
├── scripts
├── rtl # Verilog和VHDL文件
├── testbenches # 回归测试和测试数据
└── cds # Cadence库的父目录├── proj_lib1 # 项目库之一├── proj_lib2 # 另一个项目库└── scratch_lib # 用户临时工作用的库
.cdsinit
、cdsLibMgr.il
和 cds.lib
文件将存储在本示例项目结构中的 cds
目录下。在每个 Cadence 库目录中创建一个 cdsinfo.tag
文件。
.cdsinit
在.cdsinit
文件的末尾添加以下几行:
let( (clioDir)clioDir = getShellEnvVar("CLIOSOFT_DIR") load((strcat clioDir "/scripts/cds_sosviadfII.il"))
)
注意:为了确保所有用户都能运行SOS,请对全局的
.cdsinit
文件进行此更改,或者更改包含在项目工作区目录中的.cdsinit
文件中。
cdsLibMgr.il
在Cadence库管理器启动时加载SOS菜单。
let( (clioDir)clioDir = getShellEnvVar("CLIOSOFT_DIR") load((strcat clioDir "/scripts/cdsLibMgr.il"))
)
cdsinfo.tag
cdsinfo.tag
文件告诉 Virtuoso 使用哪个设计管理(DM)系统,如果有的话。每个库目录应该包含一个具有该库正确设置的 cdsinfo.tag
文件:
- 使用 SOS 管理的项目库需要指定 SOS 作为 DM 系统,在文件中包含这一行
DMTYPE sos
- 未管理的参考库或临时库不应指定任何 DM 系统。在文件中包含这一行:
DMTYPE none
cdsinfo.tag
文件中不应有其他DMTYPE
设置。
cds.lib
每个用户的个人cds.lib
文件应该是一个不受管理的文件(在SOS版本控制之外),位于他们工作区的cds目录中。并且cds.lib
文件中包含一个共同的project.lib
文件:
INCLUDE ./project.lib
project.lib
文件在SOS中进行管理。以下是一个示例:
# Reference libs not manaåed by SOS
DEFINE ref_lib1 /projects/common/reflibs/ref_lib1
DEFINE ref_lib2 /projects/common/reflibs/ref_lib2
DEFINE ref_lib3 /projects/common/reflibs/ref_lib3
DEFINE pdk_lib /projects/common/pdks/pdk_lib
# Project libraries
DEFINE proj_lib1 ./proj_lib1
DEFINE proj_lib2 ./proj_lib2
检查集成是否成功
- 启动 Virtuoso 并打开任何 schematic、symbol 或 layout cellview。
- 点击 Design Manager --> (Check Out | Check In | Manage Hierarchy) 命令。
- 退出 Virtuoso
与Mentor Pyxis的集成
为了设置用户的环境以使用SOS与Mentor Pyxis软件版本10.5_4或更高版本:
- 设置以下环境变量:
setenv MGC_HOME mentor-installation-dir
setenv MGLS_LICENSE_FILE port@host
setenv AMPLE_PATH $CLIOSOFT_DIR/adaptors/dmgr/userware
- 将
$MGC_HOME/bin
添加到你的路径中
将现有的MGC项目添加到SOS版本控制系统并设置项目管理员的工作区:- 创建一个新的SOS工作区。
- 将MGC项目文件复制到新的工作区。
- 从工作区目录启动Pyxis项目管理器。修订控制菜单应该出现在窗口顶部。
- 通过选择 File --> Open Hierarchy 来打开项目。
- 通过选择窗口左侧的项目,然后选择 Revision Control > Add Project,将项目添加到修订控制中。
与Synopsys Custom Compiler的集成
按照以下步骤将SOS与Synopsys Custom Compiler软件集成:
- 设置
$SYNOPSYS_CUSTOM_SITE
环境变量,此变量指向包含Synopsys第三方软件集成文件的目录。此目录通常所有用户均可读,但只有管理员可写。
setenv SYNOPSYS_CUSTOM_SITE path_to_directory
- 在
$SYNOPSYS_CUSTOM_SITE
下创建images
子目录。
mkdir $SYNOPSYS_CUSTOM_SITE/images
- 在
$SYNOPSYS_CUSTOM_SITE
下的images目录中创建SOS符号链接。
ln -s $CLIOSOFT_DIR/adaptors/cdesigner/images/sos \
$SYNOPSYS_CUSTOM_SITE/images/sos
- 更新SOS客户端配置文件
sos.cfg
,添加处理构成 cellview 的关联文件作为单个包的规则。- 如果所有项目都将使用Synopsys Custom Compiler,您可以更新站点定制文件
$SOSD_CONFIG_DIR/sos.cfg
或系统默认文件$CLIOSOFT_DIR/data/sos.cfg
。 - 如果某些项目使用其他设计工具,请更新特定于项目的文件,
server_name.rep/project_name/setup/sos.cfg
。 - 更改模板在
$CLIOSOFT_DIR/adaptors/cdesigner/sos.cfg
。
示例:
- 如果所有项目都将使用Synopsys Custom Compiler,您可以更新站点定制文件
cat $CLIOSOFT_DIR/adaptors/cdesigner/sos.cfg >> \
path_to_repository/setup/sos.cfg
- 更新
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件。该文件包含Custom Compiler对第三方工具的定制。可以从同一个文件加载多个自定义集成。- 将
$CLIOSOFT_DIR/adaptors/cdesigner/.cdesigner.tcl
追加到$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件中。
示例:
- 将
cat $CLIOSOFT_DIR/adaptors/cdesigner/.cdesigner.tcl >> \
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
使用SOS管理库定义
SOS可以管理一个由Custom Compiler处理的库定义文件,即sos_project.defs
。这个由SOS管理的文件会被包含在用户工作区的未管理的lib.defs
文件中。如果用户创建、复制、移动或检入一个库,SOS会检查该库是否在lib.defs
文件中定义。如果SOS在lib.defs
中找到该库,SOS会从lib.defs
中删除库的定义,并将定义移动到sos_project.defs
中。每当用户创建一个新的工作区时,SOS会创建一个lib.defs
文件,并将sos_project.defs
包含在那个新的lib.defs
文件中。
这个功能默认是禁用的。按照以下步骤启用库定义管理:
- 将这一行添加到每个用户的
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件中:
namespace eval sos { global sosLibMgt set sosLibMgt 1
}
这个变量值使得库定义管理成为可能。
2. 检查 sos_project.defs
文件的初始版本
3. 可选,通过更新$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件来为SOS库定义文件指定一个特定站点的名称:
namespace eval sos { global sosLibMgtFilename set sosLibMgtFilename "sos_my_project.defs"
}
- 在
sos.cfg
中定义这个触发器,以便当用户创建并填充一个新的工作区时自动创建lib.defs
文件:
trigger cc_SosLibMgt_trigger {populate {-- Checks for the lib.defs file and creates it if one is not presentexec_after "$CLIOSOFT_DIR/scripts/cc_soslibmgt"}
}
与问题跟踪系统的集成
您可以在Custom Compiler中选择自定义SOS用户界面,以便用户在检入文件时可以在问题跟踪系统中指定错误编号。按照以下步骤启用并配置此功能:
- 更新
sos.cfg
文件以定义issue_id
属性。
list issue_type {value java -jar $CLIOSOFT_DIR/cr_scripts/jira/jira_get.jar
}
attribute issue_id
{ type issue_type; label "IssueID"; mode set; export yes; display yes; prompt yes; }
- 更新操作的触发定义,例如您想要跟踪问题ID的签入操作。例如:
trigger dflt_file_trigger {ci {attribute issue_id;exec_after java -jar $CLIOSOFT_DIR/cr_scripts/jira/jira_put.jar$SOS_issue_id 1>/dev/null 2>&1 &}
}trigger dflt_package_trigger { ci {attribute issue_id;exec_after java -jar $CLIOSOFT_DIR/cr_scripts/jira/jira_put.jar $SOS_issue_id 1>/dev/null 2>&1 &}
}
- 更新
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件以在 Check In 表单中定义问题ID字段。
set clioDirScr "$env(CLIOSOFT_DIR)/bin/soscr report summary"
set clioIssue [list "issue_id" "IssueID" $clioDirScr "ci"]
set sos::sosAttrListG [list $clioIssue]
- 退出 Custom Compile 和SOS,然后重新启动它们。
自定义对话框中的属性列表
您可以在Custom Compiler中选择自定义SOS用户界面,以指定对象列表中显示哪些属性。每个用户都可以使用对话框中的Customize按钮来自定义列表。要设置一组标准的默认属性(用户仍然可以覆盖),有两种选项:
- 创建一个
.sosInit.tcl
文件,该文件指定了属性,并让每个用户在他们启动Custom Compiler的目录中安装该文件。
要创建文件,请使用Customize按钮定义属性列表并保存更改。这将创建一个名为.sosInit-user.tcl
的文件。接下来,将文件重命名为.sosInit.tcl
并分发给每个用户。 - 在
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件中指定属性。在此文件中指定属性的格式为:
array set sos::sosDisplayAttributesTabG {Revision
{label Revision}}
array set sos::sosDisplayAttributesTabG {LatestRev
{label Latest}}
array set sos::sosDisplayAttributesTabG {CheckedOutBy
{label Locked}}set sos::sosDisplayAttributesColOrderG
{ "Revision" "LatestRev" "CheckedOutBy" }
定制杂项命令列表
您可以创建特定于站点的自定义设置,以从 Design Manager > Miscellaneous 命令中获得可用的命令。
要将SOS命令添加到杂项对话框中的命令列表,请在$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
文件中的全局数组
中添加项目。
例如:
array set sosMiscCmdTabG
{Listing "ls -l @SELECTION >@POPUP "}
在这个例子中,Listing
是在对话框中显示的命令名称,而ls -l
是用户在对话框中看到的命令。@SELECTION
关键字指定当前选定的项目。@POPUP
关键字指定结果应该在文本编辑器窗口中显示。
你可以使用>字符来重定向结果,如这个例子所示:
"soscmd status -sm -sor -sunm @SELECTION > myFile.log"
你还可以定义Tcl函数来执行。默认情况下,SOS有注册的函数sos::scdMiscellenousProc
。单一参数是选定项目的路径列表;返回值是结果。你可以覆盖这个函数以获得不同的结果。
与Synopsys Laker的集成
要将SOS与Synopsys Laker软件集成:
- 如果文件
laker_install_path/integration/SOS/integ.tcl
尚未安装,请运行以下命令:
mkdir laker_install_path/integration/SOS
cp $CLIOSOFT_DIR/scripts/sos_laker_main_menu.tcl \
laker_install_path/integration/SOS/integ.tcl
Laker软件的最新版本已经预装了这个文件。
2. 更新laker.rc
文件以启用SOS数据管理,通过包含或编辑以下行:
[DataManagement] DMAutoCheckOutCV = Prompt DMAutoCheckInCV = Never
DMAutoCheckOutInFile = Prompt DMToolType = SOS
[LeoPreference] MCellVersionControl = TRUE
相关文章:

Clisoft SOS与CAD系统集成
Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg,以包含支持ADS的模板&am…...

【linux系统之redis6】redis的安装与初始化
下载redis的linux对应的安装包,并上传到linux虚拟机里面 解压压缩包 tar -zxzf redis-6.2.6.tar.gz解压后,进入redis文件 cd redis-6.2.6执行编译 make && make install看到下图,就说明redis安装成功了 默认的安装路径,…...

Backend - EF Core(C# 操作数据库 DB)
目录 一、EF Core 1. 使用的ORM框架(对象关系映射) 2. EFCore 常见两种模式 3. EFCore 提供程序 二、 EF 操作数据库(Code First) 1. 下载NuGet插件 2.创建模型类文件 3.创建DBContext文件 4.Programs.cs文件 5.appsettings.Devel…...
WebSocket 性能优化:从理论到实践
在前四篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发、客户端实现和安全实践。今天,让我们把重点放在性能优化上,看看如何构建一个高性能的 WebSocket 应用。我曾在一个直播平台项目中,通过一系列优化措施,将单台服务器的并发连接数从 1 万提升到 10 万。 性能挑…...
我用AI学Android Jetpack Compose之入门篇(2)
我跑成功了第一个Compose应用,但我还是有很多疑问,请人工智能来解释一下吧。答案来自 通义千问 文章目录 1.请解释一下Compose项目的目录结构。根目录模块目录(通常是app)app/build.gradleapp/src/mainapp/src/main/uiapp/src/ma…...
以太网协议在汽车应用中的动与静
为了让网络中的设备能够随时或随地接入网络或离开网络,做到:接入时无需多余的配置就能和其他设备互相通信;离开时又不会导致设备或网络崩溃。以太网从物理层到协议层展现出多方面的灵活性,,使其成为连接各种设备和系统…...

【C语言】_指针与数组
目录 1. 数组名的含义 1.1 数组名与数组首元素的地址的联系 1.3 数组名与首元素地址相异的情况 2. 使用指针访问数组 3. 一维数组传参的本质 3.1 代码示例1:函数体内计算sz(sz不作实参传递) 3.2 代码示例2:sz作为实参传递 3…...
Selenium 的四种等待方式及使用场景
Selenium 的四种等待方式及使用场景 隐式等待(Implicit Wait)显式等待(Explicit Wait)自定义等待(Custom Wait)固定等待(Sleep) 1. 隐式等待 定义: 隐式等待是为 WebD…...
React知识盲点——组件通信、性能优化、高级功能详解(大纲)
组件通信 React 组件通信详解 在 React 中,组件通信是一个核心概念,主要指的是如何让不同的组件共享和传递数据。React 提供了多种机制来实现组件间的数据传递和状态共享。以下是几种常见的组件通信方式,包括:父子组件通信&…...

Vue 按键生成多个表单
本文通过 vueele,通过循环ref的方法生成多个表单,代码如下: <template><div><el-button click"addText" style"margin: 15px 0; ">添加字段</el-button><div v-for"item, index in dataList"…...

网络安全:交换机技术
单播,组播广播 单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。组播(multicast): 也叫多播&am…...
Flask 快速入门
1. Flask 简介 1.1 什么是 Flask Flask 是一个用 Python 编写的轻量级 Web 框架,被誉为 微框架。它提供基础功能,如路由、请求处理和模板引擎,但不强迫开发者使用特定库或工具,赋予开发人员高度的自由选择权,以满足不…...
C#设计模式(行为型模式):备忘录模式,时光倒流的魔法
C#设计模式:备忘录模式,时光倒流的魔法 在软件开发中,我们经常会遇到需要保存对象状态,并在未来某个时刻恢复的场景。例如: 撤销操作: 文本编辑器中的撤销功能,游戏中的回退操作。事务回滚&am…...

数据库高安全—角色权限:权限管理权限检查
目录 3.3 权限管理 3.4 权限检查 书接上文数据库高安全—角色权限:角色创建角色管理,从角色创建和角色管理两方面对高斯数据库的角色权限进行了介绍,本篇将从权限管理和权限检查方面继续解读高斯数据库的角色权限。 3.3 权限管理 &#x…...
FastAPI 的依赖注入与生命周期管理深度解析
FastAPI 的依赖注入与生命周期管理深度解析 目录 🔧 依赖注入与 FastAPI 高级特性 1.1 依赖注入的基础与核心概念1.2 FastAPI 的依赖注入机制与设计理念1.3 FastAPI 依赖注入的异步特性 🕹 生命周期与依赖的异步管理 2.1 依赖的生命周期管理࿱…...

【express-generator】05-路由中间件和错误处理(第一阶段收尾)
一、前言 上篇文章我们介绍了express-generator的请求体解析,重点讲了常用的请求体数据格式(JSON/URL 编码的表单数据)以及一个FILE文件上传,同时搭配代码示范进行辅助理解。 二、本篇重点 我们继续第一阶段的知识,…...
Linux环境下确认并操作 Git 仓库
在软件开发和版本控制中,Git 已成为不可或缺的工具。有时,我们需要确认某个目录是否是一个 Git 仓库,并在该目录中运行脚本。本文将详细介绍如何确认 /usr/local/src/zcxt/backend/policy-system-backend 目录是否是一个 Git 仓库,…...

UDP -- 简易聊天室
目录 gitee(内有详细代码) 图解 MessageRoute.hpp UdpClient.hpp UdpServer.hpp Main.hpp 运行结果(本地通信) 如何分开对话显示? gitee(内有详细代码) chat_room zihuixie/Linux_Lear…...

NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜
AI的两次寒冬:从感知机困局到深度学习前夜 引用(中英双语) 中文: “第一次AI寒冬,是因为感知机局限性被揭示,让人们失去了对算法可行性的信心。” “第二次AI寒冬,则是因为专家系统的局限性和硬…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...