当前位置: 首页 > article >正文

帕拉丁调试指南之SDL 语言编写指南(快速参考)

1. SDL 文件基本结构SDL 程序由三个主要部分组成text// 1. 全局定义段可选 scope ...; define ...; enum ...; tdef ...; trigger ...; if (...) trigger; ... // 2. 实例定义段至少一个实例可多个 instance 实例名; // 实例内部全局定义 alias ...; trigger ...; ... // 状态机定义至少一个状态 state 状态名 { if (...) { ... } else { ... } goto ...; load counter1 ...; ... } // 更多状态...若只有一个实例instance语句可省略编译器自动赋予默认实例名。每个实例可包含最多一个状态机。状态机中可包含多个状态第一个状态为起始状态。2. 基本语法规则规则说明注释// 单行注释或/* 多行注释 */空白空格、制表符、换行均视为空白用于分隔 token标识符由字母、数字、下划线组成不能以数字开头大小写敏感关键字大小写不敏感如trigger、TRIGGER、Trigger均可语句结束通常以;结束代码块用{}括起右大括号后不加;包含文件include 文件名;必须单独一行文件名用双引号宏定义define 宏名 替换文本使用宏名或宏名引用undef 宏名取消定义条件编译ifdef/ifndef/if/elseif/else/endif用于根据条件包含或排除代码段3. 表达式与运算符3.1 操作数设计信号层次路径DRTL 输出端口drtl_inst.port断言名称finished、failed等别名alias 表达式;用户符号由symbol命令定义UPF/CPF 对象如VDD1 FULL_ON计数器值COUNTER1、COUNTER2特殊常量bP、bN、bT、bL、bH、bS、bX3.2 运算符按优先级从高到低类别运算符说明一元~!|transition()count()prev()isunknown()位取反、逻辑非、归约与、归约或、跳变检测、计数、延时、未知检测比较!结果均为单比特位运算^|逐位与、异或、或逻辑||逻辑与、或结果单比特拼接{ }将多个信号拼接成向量内部只能是信号名3.3 特殊值说明bP: 上升沿前一周期0当前周期1bN: 下降沿bT: 任意跳变bL: 稳定为0连续两周期为0bH: 稳定为1bS: 稳定连续两周期值相同bX: 忽略任意值均匹配边缘检测需要信号在连续两周期内采样首周期评估可能不准确。4. 全局定义Global Definition位于所有instance之前适用于所有实例。语句示例说明scopescope top.chip;设置后续信号查找的默认层次enumenum color {red, green5, blue};定义枚举类型用于%[enum]格式化tdeftdef mytx {typeWR, streambus};定义事务属性模板triggerPostriggerPos 50;设置触发位置百分比0~100postTriggerSamplespostTriggerSamples 100;设置触发后采样数与triggerPos互斥COUNTER1/COUNTER2COUNTER1 100;设置计数器的默认加载值ENABLE1/ENABLE2ENABLE1 clk bP;设置计数器自动递减的使能条件if(expr) TRIGGER;if (ab) trig_lab: TRIGGER;全局触发条件if(expr) DISPLAY(...);if (err) display(Error);全局显示if(expr) EXEC(cmd);if (cnt0) exec puts done;全局执行命令if(expr) ACQUIRE;if (valid) acquire;全局采集使能if(expr) NO_ACQUIRE;if (idle) no_acquire;全局采集禁止if(expr) TX(...);if (start) tx(begin, txid);全局事务记录5. 实例定义Instance Definition以instance 实例名;开始直到下一个instance或文件结束。可以定义实例私有的别名、全局触发、采集、显示等语法同全局定义段。别名作用域仅限于该实例。实例中可包含状态机state语句。6. 状态机定义State Machine6.1 状态定义textstate 状态名 { // 状态体由 if-else 和动作组成 }每个状态内最多可包含 8 个基于信号的表达式计数器条件不计入限制。动作之间若有冲突按文本顺序执行编译器会警告。6.2 动作Actions动作示例说明GOTOgoto STATE2;下一周期跳转到指定状态LOADload counter1 50;加载计数器值可缺省使用默认值INCREMENTincrement counter1;计数器加1DECREMENTdecrement counter1;计数器减1即使自动递减模式下也生效STARTstart counter1;使计数器进入自动递减模式每个使能周期减1STOPstop counter1;停止自动递减模式TRIGGERmytrig: TRIGGER;触发停止取决于模式ACQUIREacquire;强制当前周期采集数据NO_ACQUIREno_acquire;强制当前周期不采集数据EXECexec puts hello;执行 Tcl/XEL 命令DISPLAYdisplay(val%d, sig);打印格式化消息TXtx(begin, id, streamabc);记录事务TRACE_TSMtrace_tsm;强制将当前周期写入 SDL 跟踪缓冲区6.3 条件语句textif (expr) 动作; if (expr) { 动作1; 动作2; } else { 动作3; } if (expr1) 动作1; else if (expr2) 动作2; else 动作3;表达式为真非零向量或标量1时执行。if-else if链按顺序评估只执行第一个为真的分支。7. 计数器每个实例有两个 40 位计数器COUNTER1/CNTR1和COUNTER2/CNTR2。比较COUNTER1 100、COUNTER2 0。加载load counter1 200可用十进制或h、b等进制。自动递减start counter1开启每个使能周期减1使能由ENABLE1定义默认每个周期。手动增减increment counter1/decrement counter1。停止自动递减stop counter1。8. DISPLAY 语句格式化语法textdisplay (FID, Llevel, format, arg1, arg2, ...);FID指定输出文件标识用sdl -display -id ID -file name关联文件。Llevel消息级别低于全局日志级别sdl -display -loglevel的消息被抑制。format字符串中的转义序列序列说明%h/%H十六进制小写/大写%d无符号十进制%i有符号十进制%o八进制%b二进制%cASCII 字符%s字符串对信号为 ASCII 值对 UPF/断言为状态名%n当前 SDL 实例名%t仿真时间$var/${var}Tcl 变量值编译时替换%[enum_type]按枚举格式化%[...]执行 Tcl 命令并插入结果%%百分号本身\n\t\\\\$转义字符字段宽度和对齐%[ -][0][宽度]格式如%10d、%-10d、%010b。若format省略默认输出时间 级别 标签 参数十六进制9. TX 语句事务记录9.1 语法texttx (begin | end | event | error | set, tx_id, [属性...]);9.2 属性命名属性type 类型默认与tx_id相同stream 流名默认SDL_DEFAULT_TXscope 作用域默认SDL_TX_SCOPEtitle 标题默认typedescription 描述默认空信号属性信号名以十六进制显示信号值{格式, 信号名}按格式显示信号值{属性名, 格式, 表达式...}构造字符串属性模板引用tdef tdef_id引用先前tdef定义的属性集。9.3 tdef 定义texttdef tdef_id { 属性, 属性, ... };可包含任意数量的命名属性和信号属性用于简化多个 TX 语句。9.4 tlink 语句事务链接texttlink tx_id1 属性名1 tx_id2 属性名2;当两个事务的属性值相同时建立链接用于跟踪因果关系。10. 特殊表达式与函数transition(表达式)检测表达式中任何位发生跳变。count(表达式, 次数, [模式])私有计数器表达式为真的次数达到次数时返回真。模式P计数上升沿、S状态内计数离开状态重置、PS/SP组合。prev(表达式)返回上一周期的表达式值。isunknown(表达式)若表达式包含未知X值返回1否则0仅用于设计信号。UPF_ILLEGAL_EVENTUPF 非法事件发生时为高。EXEC_BUSYEXEC 缓冲满时为高用于避免溢出。11. 编译与运行最大实例数编译时compilerOption -add {sdlInstances N}N≤64默认1。跟踪缓冲区深度compilerOption -add {sdlTraceDepth 16k}。显示缓冲区深度sdlDisplayDepth编译选项。运行时启用 SDLsdl -enable指定文件sdl -setfile 文件。启用/禁用实例sdl -enable 实例名/sdl -disable 实例名。启用/禁用标签sdl -enable-label 标签/sdl -disable-label 标签。查看 SDL 状态sdl -report、sdl -getTriggers。调试 SDLsdl -traceOn/sdl -traceDump。12. 与 Tcl 交互在 SDL 中使用 Tcl 变量$var或${var}编译时替换。在EXEC中使用 Tcl 变量运行时替换。条件编译中可用 Tcl 变量if $var或if ${var}值必须为整数。Tcl 数组元素也可使用$array(index)。13. 注意事项SDL 评估有最多 2 FCLK 周期的延迟除触发点报告外可通过xeset stopDelay 0消除延迟速度降至 1/3SA 模式不支持。在 IXCOM 模式下触发和 EXEC 延迟可能更大建议使用边缘检测或时钟限定以获得确定性行为。采集控制ACQUIRE/NO_ACQUIRE不能混用。显示消息缓冲在硬件中溢出会导致丢失可增加缓冲区深度或降低消息产生速率。不支持在 SDL 表达式中嵌套特殊值如(sigbP)bP首周期可能不正确。DRTL 输出端口可作为信号使用。

相关文章:

帕拉丁调试指南之SDL 语言编写指南(快速参考)

1. SDL 文件基本结构SDL 程序由三个主要部分组成:text// 1. 全局定义段(可选) scope ...; define ...; enum ...; tdef ...; trigger ...; if (...) trigger; ...// 2. 实例定义段(至少一个实例,可多个) i…...

AgentCPM深度研报助手企业级部署架构设计:高并发下的性能与成本优化

AgentCPM深度研报助手企业级部署架构设计:高并发下的性能与成本优化 最近和几个做金融科技的朋友聊天,他们都在头疼一件事:公司内部的分析师、研究员越来越多地依赖AI来辅助撰写行业研报,但现有的AI服务要么太贵,要么…...

通用物体识别-ResNet18镜像5分钟快速部署:零基础搭建AI图像分类服务

通用物体识别-ResNet18镜像5分钟快速部署:零基础搭建AI图像分类服务 1. 引言:为什么选择ResNet-18进行物体识别? 在当今AI技术快速发展的时代,图像分类已经成为许多应用的基础功能。但对于初学者和中小型企业来说,部…...

餐饮店主的AI助手:像素特工Ostrakon-VL快速上手,自动检查厨房卫生与陈列

餐饮店主的AI助手:像素特工Ostrakon-VL快速上手,自动检查厨房卫生与陈列 1. 为什么餐饮店主需要AI视觉助手 想象一下这样的场景:早上开店前,你匆匆拍下厨房的照片,上传到一个系统。几秒钟后,它告诉你&…...

CLAP Zero-Shot Audio Classification Dashboard与卷积神经网络的性能对比

CLAP Zero-Shot Audio Classification Dashboard与卷积神经网络的性能对比 音频分类技术正在经历一场革命性的变革。传统的卷积神经网络(CNN)方法需要大量标注数据进行训练,而新兴的零样本学习技术正在改变这一格局。今天我们将深入对比CLAP…...

构建高效Cursor Pro功能解锁的模块化架构实现指南

构建高效Cursor Pro功能解锁的模块化架构实现指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request limi…...

量化交易开发实战指南:从入门到部署

量化交易开发实战指南:从入门到部署 【免费下载链接】StockSharp Algorithmic trading and quantitative trading open source platform to develop trading robots (stock markets, forex, crypto, bitcoins, and options). 项目地址: https://gitcode.com/gh_mi…...

二次封装ElementUI日期范围组件:打造带限制规则的Vue2 v-model响应式通用组件

二次封装ElementUI日期范围组件:打造带限制规则的Vue2 v-model响应式通用组件 在基于Vue2ElementUI的后台系统开发中,日期范围选择器是高频使用的表单组件。原生组件虽满足基础选择需求,但面对日期范围限制(最长90天)、…...

Go Routine 调度模型详解

Go Routine 调度模型详解 在现代编程语言中,高效的并发模型是提升程序性能的关键。Go语言凭借其轻量级的Go Routine和高效的调度器,成为高并发场景下的佼佼者。本文将深入解析Go Routine的调度模型,帮助开发者理解其底层机制,从而…...

C++的std--ranges选择管理

C的std::ranges选择管理:现代算法的新范式 在C20标准中,std::ranges的引入彻底改变了传统算法的实现方式,为开发者提供了更简洁、更安全的范围操作工具。通过范围库,开发者可以摆脱繁琐的迭代器对,直接操作数据序列&a…...

Gerbv:免费开源Gerber文件查看器的终极指南,PCB设计验证的得力助手

Gerbv:免费开源Gerber文件查看器的终极指南,PCB设计验证的得力助手 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 你是否曾经为PCB设计文件的查看而烦恼&#…...

新手福音:用快马生成centos8下载安装全流程可视化引导工具

今天想和大家分享一个特别适合Linux新手的实用工具——用InsCode(快马)平台快速生成CentOS 8下载安装引导程序。作为一个从Windows转Linux的过来人,我深知第一次面对系统安装时的茫然,这个工具能帮你把复杂流程变成可视化指引。 为什么需要这个工具 刚接…...

当测试脚本杀人:军工AI系统的质量失控实录

对于软件测试从业者而言,我们早已习惯了与代码缺陷、性能瓶颈和逻辑错误作斗争。我们构建自动化脚本,设计测试用例,守护着软件世界的秩序与安全。然而,当测试的对象从商业应用转向决定生死的军工AI系统时,质量保障的维…...

全新THVD1400DR 500kbps RS-485 收发器 TI德州仪器 电子元器件 进口芯片IC

THVD1400DR:12kV IEC ESD 保护、3.3V 至 5V、500kbps RS-485 收发器——TI德州仪器Texas Instruments(德州仪器)推出的 THVD1400DR RS-485 收发器,正是为应对这些挑战而设计。它凭借 12kV IEC ESD 保护、3.3V 至 5.5V 宽电源电压范…...

网络钓鱼攻击特征识别与多维度防御技术研究

摘要 网络钓鱼是当前最普遍、危害最突出的网络安全威胁类型,攻击者依托伪造邮件、短信、社交信息与虚假网站,结合社会工程学手段诱导用户泄露敏感数据或执行恶意操作,对个人信息安全与机构运行稳定构成持续威胁。本文以网络钓鱼攻击机理、典型…...

AI 赋能下新型网络钓鱼攻击演进与多维度防御技术研究

摘要 生成式人工智能的普及使网络钓鱼攻击进入智能化、隐蔽化新阶段,攻击周期大幅缩短、伪装精度显著提升,传统基于规则与特征库的防御机制失效。本文结合 ESET 安全研究与企业实测数据,剖析 AI 驱动钓鱼攻击的技术机理、混淆手段与传播路径&…...

5分钟掌握Python抢票神器:告别手动抢票的烦恼!

5分钟掌握Python抢票神器:告别手动抢票的烦恼! 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 你是否还在为抢不到心仪…...

企微私域工具数据安全与合规:5个必查项

某公司用了半年企微私域工具,突然发现客户手机号被工具厂商用来发营销短信。法务一查,原来是协议里写了“数据可用于优化产品”。选【企微私域工具】,数据安全比功能更重要。今天列出5个必须检查的安全合规点。企微工具选择要把安全放第一位&…...

告别重复劳动,用快马平台ai高效生成openclaw自动化脚本

最近在折腾一些文件批量处理的自动化任务,发现OpenClaw这个命令行工具特别适合做这类工作。但每次都要手动敲命令实在太费时间了,特别是需要组合多个命令的时候,调试起来特别麻烦。后来发现了InsCode(快马)平台,用它来编写OpenCla…...

Phi-4-mini-reasoning实操手册:Web界面响应延迟高?GPU显存占用诊断方法

Phi-4-mini-reasoning实操手册:Web界面响应延迟高?GPU显存占用诊断方法 1. 问题背景与现象分析 当使用Phi-4-mini-reasoning进行推理任务时,Web界面响应延迟高是一个常见问题。这种情况通常表现为: 点击"开始生成"按…...

三步掌握Citra模拟器:从入门到精通的高效实用指南

三步掌握Citra模拟器:从入门到精通的高效实用指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra Citra是一款开源的Nintendo 3DS模拟器,它能让你在Windows、Linux和macOS系统上流畅运行《…...

DeFi(去中心化金融)核心概念

**DeFi:重塑金融未来的去中心化革命** 在传统金融体系中,银行、交易所等中介机构掌控着资金流动与金融服务。随着区块链技术的崛起,一种全新的金融模式——去中心化金融(DeFi)正在颠覆这一格局。DeFi通过智能合约和去…...

什么是 Harness Engineering?OpenAI Codex 团队亲自给出答案

过去五个月,OpenAI 的一个团队做了一件听起来有点疯狂的事:从零开始交付一款软件产品的内测版本,全程没有一行代码是人手写的。 这不是玩具项目。这个产品有真实的内部日活用户和外部 Alpha 测试者,经历了完整的交付、部署、故障…...

用快马AI快速构建web终端原型:复刻xshell免费版核心体验

最近在尝试复刻xshell免费版的核心体验,想做一个轻量级的web终端原型。作为一个经常需要远程连接服务器的开发者,xshell的简洁高效一直让我印象深刻。这次我用InsCode(快马)平台快速实现了这个想法,整个过程特别顺畅,分享下我的实…...

10080-基于单片机的智能输液监测系统设计(仿真工程文件+原理图工程+源代码工程+详细介绍说明书)

基于单片机的智能输液监测系统设计(仿真工程文件原理图工程 10080-基于单片机的智能输液监测系统设计(仿真工程文件原理图工程源代码工程详细介绍说明书) 功能描述: (1)设计一个光电传感器,置于一次性输液器的漏斗外边…...

Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定

Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定 1. 为什么选择Qwen3-TTS声音设计模型? 1.1 用自然语言"设计"声音,不是选择音色 传统语音合成工具通常提供固定音色库,而Qwen3-TTS的VoiceDesign功能允…...

实战指南:基于快马AI生成代码,快速构建并部署一个完整企业网站

今天想和大家分享一个实战经验:如何用InsCode(快马)平台快速搭建一个完整的企业网站。整个过程非常流畅,特别适合需要快速上线展示页面的场景。 项目结构规划 首先明确企业网站需要的核心页面:首页、关于我们、服务项目、案例展示、团队介绍、…...

C++的std--ranges适配器视图迭代器失效规则与悬垂引用

C的std::ranges适配器视图迭代器失效规则与悬垂引用 现代C引入了std::ranges库,为算法和范围操作提供了更强大的支持。使用适配器视图时,迭代器失效和悬垂引用问题可能成为隐藏的陷阱。理解这些规则对编写安全高效的代码至关重要。 视图的惰性求值特性…...

Buck电路PCB布局优化与EMI控制技巧

1. Buck电路PCB布局的重要性在开关电源设计中,PCB布局的好坏直接决定了电源的稳定性、效率和EMI性能。以Buck电路为例,不合理的布局可能导致输出电压纹波增大、转换效率降低、甚至引发系统振荡等问题。我从事电源设计多年,见过太多因为PCB布局…...

抖音批量下载工具终极指南:如何免费快速获取无水印视频素材

抖音批量下载工具终极指南:如何免费快速获取无水印视频素材 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...