在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: alaniii

[求助] 求助,用SKILL写一个反相器

[复制链接]
发表于 2025-4-6 13:48:12 | 显示全部楼层
函数别乱用,查查用法说明再用。比如 cdsFinder 中你可以看到 dbCreatePin的用法为:




  1. dbCreatePin(
  2. d_netId
  3. d_figId | nil
  4. [ t_pinName | nil ]
  5. [ d_termId | nil]

  6. )
  7.      => d_pin / nil


复制代码

显然你的代码里不符合这个用法。

其他方面,你这个脚本并不需要打开窗口,所以设置当前窗口的语句多余(也不对)
发表于 2025-4-6 13:50:05 | 显示全部楼层
再补充:一般情况下,PDK库中的MOS管,layout是PCELL,symbol仅仅是普通cell,不需要用dbCreateParamInst,用dbCreateInst创建instance,再用 vsoSetParam 设置参数就是了。
 楼主| 发表于 2025-4-7 10:19:02 | 显示全部楼层


acrofoxAgain 发表于 2025-4-6 13:50
再补充:一般情况下,PDK库中的MOS管,layout是PCELL,symbol仅仅是普通cell,不需要用dbCreateParamInst, ...


非常感谢
 楼主| 发表于 2025-4-7 14:40:55 | 显示全部楼层
本帖最后由 alaniii 于 2025-4-7 14:42 编辑


acrofoxAgain 发表于 2025-4-6 13:50
再补充:一般情况下,PDK库中的MOS管,layout是PCELL,symbol仅仅是普通cell,不需要用dbCreateParamInst, ...



小弟愚钝,尝试修改了下,但是运行时报错好多未定义函数,感觉还有好多错误要改,大佬可否帮我斧正下,或者能否给小弟一份小样,非常感谢!!!
638e2c8d47aafc7305e3286c41d799d.jpg
 楼主| 发表于 2025-4-7 14:43:27 | 显示全部楼层


acrofoxAgain 发表于 2025-4-6 13:50
再补充:一般情况下,PDK库中的MOS管,layout是PCELL,symbol仅仅是普通cell,不需要用dbCreateParamInst, ...


procedure(createInverterSchematic(@key (libName "myLib")
                                  (cellName "inverter")
                                  (pmosWidth 1e-6)
                                  (nmosWidth 500e-9)
                                  (length 45e-9)
                                  (vddName "VDD")
                                  (gndName "VSS")
                                  (wireLayer "M1")
                                  (purpose "drawing"))
    prog((cvId pmosInst nmosInst inputNet outputNet vddNet gndNet)
        ; 检查目标库存在性
        unless(ddGetObj(libName)
            error("Library %s does not exist! Create library first." libName)
        )

        ; 静默创建原理图(不打开窗口)
        cvId = dbOpenCellViewByType(libName cellName "schematic" "schematic" "w")
        unless(cvId
            error("Failed to create schematic cellview")
        )

        ; 创建PMOS实例(标准symbol)
        pmosInst = dbCreateInst(
            cvId
            list("analogLib" "pmos" "symbol")
            "MP0"
            list(-1.0:1.5)  ; 坐标
            "R90"           ; 旋转方向
            1.0            ; 缩放比例
        )
        vsoSetParam(pmosInst "w" pmosWidth) ; 设置参数
        vsoSetParam(pmosInst "l" length)

        ; 创建NMOS实例
        nmosInst = dbCreateInst(
            cvId
            list("analogLib" "nmos" "symbol")
            "MN0"
            list(-1.0:-1.5)
            "R270"
            1.0
        )
        vsoSetParam(nmosInst "w" nmosWidth)
        vsoSetParam(nmosInst "l" length)

        ; 创建网络系统(符合cdbCreatePin规范)
        inputNet = cdbCreateNet(cvId "input")
        outputNet = cdbCreateNet(cvId "output")
        vddNet = cdbCreateNet(cvId vddName)
        gndNet = cdbCreateNet(cvId gndName)

        ; 创建输入输出端口(修改后的)
        dbCreatePin(cvId inputNet "input" "input")
        dbCreatePin(cvId outputNet "output" "output")
        dbCreatePin(cvId vddNet vddName "inputOutput")
        dbCreatePin(cvId gndNet gndName "inputOutput")

        ; 连接PMOS
        cdbCreateConnTerm(
            pmosInst
            "g"    ; 栅极
            inputNet
        )
        cdbCreateConnTerm(
            pmosInst
            "d"    ; 漏极
            outputNet
        )
        cdbCreateConnTerm(
            pmosInst
            "s"    ; 源极
            vddNet
        )

        ; 连接NMOS
        cdbCreateConnTerm(
            nmosInst
            "g"
            inputNet
        )
        cdbCreateConnTerm(
            nmosInst
            "d"
            outputNet
        )
        cdbCreateConnTerm(
            nmosInst
            "s"
            gndNet
        )

        ; 自动布局连接(替代手动走线)
        schCheck(cvId)
        schCheckConnections(cvId)
        schCheckAndSave(cvId)

        dbSave(cvId)
        dbClose(cvId)
        printf("Inverter %s/%s created with PDK standards.\n" libName cellName)
        t
    )
)

 楼主| 发表于 2025-4-7 14:47:50 | 显示全部楼层


acrofoxAgain 发表于 2025-4-6 13:50
再补充:一般情况下,PDK库中的MOS管,layout是PCELL,symbol仅仅是普通cell,不需要用dbCreateParamInst, ...


另外还想请教下,能否把一个画好的电路图转化成SKILL脚本呢?谢谢~
发表于 2025-4-7 16:17:54 | 显示全部楼层


alaniii 发表于 2025-4-7 14:47
另外还想请教下,能否把一个画好的电路图转化成SKILL脚本呢?谢谢~


可以用dbWriteSkill函数。
 楼主| 发表于 2025-4-15 15:37:57 | 显示全部楼层


acrofoxAgain 发表于 2025-4-7 16:17
可以用dbWriteSkill函数。






大佬好,dbWriteSkillWithLib转写后的代码并没有定义器件和连线的函数,加载后还报错,请问是没有加载一些库函数吗,所以才说没有定义变量unbound variable - dbD_NewLibNameForDump?该咋办呐

加载后报错

加载后报错

转写成SKILL的代码

转写成SKILL的代码
发表于 2025-4-15 16:01:37 | 显示全部楼层
贴的图看不清楚呢
发表于 2025-4-15 16:03:06 | 显示全部楼层
你可以先只些一个cellView试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-26 07:42 , Processed in 0.028016 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表