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

【Tessent IJATG Users Manual】【Ch5】IJTAG Network Insertion

  • The IJTAG Network Insertion Flow
    • IJTAG Network Insertion Example
    • Modification of the IJTAG Network Insertion Flow
  • How to Edit or Modify a DftSpecification
    • Edit or Modify Method
    • DftSpecification Examples

IJTAG Network Insertion 可以将已有的 instrument 连接起来,插入 SIBs、TDRs 和 ScanMuxes 等,以此来创建自己的 IJATG network。

IJTAG Network Insertion 可以将 network 连接到一个 TAP 控制器或者是设计中预先存在的 TAP 控制器。

IJTAG Network Insertion 的实现是直接使用 create_dft_specification 命令。工具会读取设计中所有 instrument 的 ICL 模型,然后根据 ICL 模型需要被如何访问来插入 SIB 或者是 TDR。

如果需要的话,可以对 IJATG network 网络进行编辑或者修改,以满足设计需求。

在完成设计编辑之后,可以使用 extract_icl 命令生成 IJATG 网络的 ICL 描述。IJATG network 插入之后,工具不会自动执行 ICL 提取,因为你可以在提取之前进行一些额外的编辑。

Tessent IJTAG 会生成并连接自己的TAP。如果 IJATG network 需要连接到已经存在的 TAP 控制器,需要提供该 TAP 控制器的 ICL 。


The IJTAG Network Insertion Flow


基本的 IJTAG Network Insertion 流程和对应的一些命令如下图所示:

在这里插入图片描述

如上图 5-1 所示,IJTAG Network Insertion Flow 是相对比较简单。因为你想要修改设计文件,所以就必须将工具的 context 设定为 dft,并且加载单元库、设计文件和需要使用的所有的 instrument 的 ICL (可自动加载)。
create_dft_specification 命令告诉工具创建 DftSpecification ;process_dft_specification 命令在生成或编辑设计文件之前会进行验证。

工具执行完 DftSpecification 中的内容之后,会输出一系列文件,这些文件中包含所有插入的 IJTAG network 对象(SIBs、TDRs 和 ScanMuxes)( ICL 和 verilog 两种格式)和所有修改后的设计文件。

虽然 IJTAG network 是使用 create_dft_specification 自动生成的,但是你可以使用编辑命令或者是display_specification命令打开 GUI 对生成的 DftSpecification 进行修改。

如前所示, IJTAG network 的 ICL 描述并不是自动生成的,因为你可能对其进行进一步的编辑。但是,因为所有的数据都保存在内存中,所以你可在后面使用 extract_icl命令执行 IJTAG Network 的提取过程。


IJTAG Network Insertion Example

IJTAG Network Insertion 的示例如下所述。

set context dft -no_rtl## Read the libraries
read_cell_library ./library/adk_complete.tcelllib
read_cell_library ./library/memory.atpglib## Read the netlist
read_verilog ./netlist/cpu_top_scan_tk.v
read_verilog ./generated/cpu_top_edt.v
read_verilog ./PLL/PLL.v -interface_only## Read ICL and PDL files before set_current_design
read_icl ./PLL/PLL.icl
dofile ./PLL/PLL.pdl
set_current_design cpu_top## set design level before running set_system_mode analysis
set_design_level chip## Specifiy the TAP pins using set_arrtibute_value
set_attribute_value tck_p  -name function -value tck
set_attribute_value tdi_p  -name function -value tdi
set_attribute_value tms_p  -name function -value tms
set_attribute_value trst_p -name function -value trst
set_attribute_value tdo_p  -name function -value tdoset_system_mode analysis
report_icl_modules## Automatically read any ICL from the directories that verilog is picked from
creat_dft_specification
report_config_data## Use display_specification to edit or modify the specification or use editing commands
## if neededprocess_dft_specification
extract_icl
exit

上述流程中,读入的 Verilog Netlist 已经插入了扫描链和带有 PLL 的 EDT IP。PLL 模块的 ICL 和 PDL 是在此之前单独生成并验证的。

因为 IJTAG network 是在 chip level 进行插入(set_design_level chip),所以在set_system_mode analysis之前需要指定 TAP pins。

使用 create_dft_specification 命令,PLL 和 EDT instruments 的 ICL 会被自动配置,然后插入到 IJTAG network 中。使用 report_config_data 可以报告该 network 中的内容。

如果 IJTAG network connection 是想要的,就可以使用 process_dft_specification 命令,否则可以使用编辑命令或者是打开 Configuration Data Visualizer 对其进行编辑。

最后一步就是使用 extract_icl 提取 set_current_design 所指定的 level 的 ICL。

【所以 DdfSpecification 是告诉工具如何进行 IJATG 插入,ICL 是在对完成插入的设计的 IJATG netwrok 的完整描述。如果当前设计是其他设计中的实例,在其他设计进行 IJATG netwrok 插入的时候,就可以使用当前设计的 ICL。ICL 中描述了当前设计中有哪些 Ijtag Instances(也可以叫 instrument) 以及它们之间的连接关系。】


Modification of the IJTAG Network Insertion Flow

大多数情况下,使用基本 IJTAG Network Insertion flow 即可,如果需要对其进行修改,可以使用如下内容。

在这里插入图片描述
在这里插入图片描述


How to Edit or Modify a DftSpecification


Edit or Modify Method

创建新的或者修改现有 DftSpecification 内容的两种方式:

  • Configuration Data Visualizer
  • ASCII text editor
  • 命令行

1. 图形化界面

Configuration Data Visualizer 提供创建和修改 DftSpecification 内容的图形化界面。在打开窗口中,会以树状目录显示 DftSpecification 中已经定义的内容。
你可以查看 Specification 的层次结构,对其中的 elements 进行移动,创建新的 element,或者对现有的 elements 及进行修改。

如下图所示,左边是 DftSpecification 中的内容,右边是可配置的内容。

在这里插入图片描述

选中最顶层的 DftSpecification ,鼠标右键可以添加内容。因为每个 DftSpecification 中只能由 1 个 IjtagNetwork,当前设计中已经存在了,所有右键就不会有。

在这里插入图片描述

【这个 GUI 的字体好小】

使用下述命令可以创建一个新的 DftSpecification。

在这里插入图片描述

该命令会打开 Configuration Data Visualizer 并创建和 current design 相关联的 DftSpecification Wrapper。

如果想查看内存中的 DftSpecification,对其进行修改或者追加特定的 IJTAG network,也可以使用该命令。例如,使用该命令打开当前设计中一个 ID 为 good3 的 DftSpecification。

在这里插入图片描述

Tessent Shell 中和 IJTAG Network Insertion 相关命令的小结:

在这里插入图片描述

2. ASCII text editor

就是文本编辑器直接打开 DftSpecification 文件,然后按照规定的语法修改就行了。也没有什么好说的。

但是图形化界面和文本编辑器用的不是很多,刚开始学的时候,可以用一用,在实际的项目设计中,都是 flow,更多的是考虑在命令行或者脚本中对其进行修改。

3. 命令行修改


  • CMD1read_config_data -in $spec -from_sting {}

    这个命令可以将特定的字符串(-from_sting后面 {} 中的内容,{} 也可以是双引号)写入到 DftSepc 中,字符串需要遵循 DftSepc 的语法,字符串可以放在 Tcl 变量中。

    如果想在 IjtagNetwork 中的 SIB 下面新加入一个 tdr,就可以使用下述命令:

    在这里插入图片描述

    Tdr wrapper 中的所有内容都可以按照规定的语法在这里定义。

    但是有一个问题是,双引号中的内容不能有变量,所有的变量都会当作普通字符串,如果想要使用变量,可以使用下述方式:

    在这里插入图片描述

    先将要插入的内容放到一个变量中,然后把变量给到命令。


  • CMD2add_config_element & set_config_value

    首先使用 add_config_element 命令插入一个 wrapper :

    在这里插入图片描述

    然后在使用 set_config_value 命令设定参数值。

    在这里插入图片描述
    该命令就是将一个 OCC wrapper 中的 clock_intercept_node 选项设置为 $clk

    使用 get_config_value -in_wrapper wrapper_object 可以返回 wrapper 中那些内容可以通过 set_config_value 命令控制。

    set_config_value 命令只能设计 wrapper 中已经存在的选项的值。如下图所示的 Tdr wrapper,绿色方框中的选型时默认存在的,可以直接设置,但是对于红色方框中的内容,如果是空的,就不能设置。如果有内容,如 connection(0) 已经存在了,那么是可以用该命令对其进行改的。

    也就是说,set_config_value命令只能修改已经存在的内容,不能增加内容

    在这里插入图片描述


  • CMD3move_config_elementdelete_config_element
    具体用法:move_config_element object_spec [-in_wrapper wrapper_name_or_object]
    就是移动 wrapper 的位置。

    【这里,可以移动和删除的内容可以是 wrapper 中的某一个配置】
    在这里插入图片描述


DftSpecification Examples

这里给出了一些使用 DftSpecification 的 element 和 syntax 创建特殊的或者常用的 IJTAG Network Insertion 任务。【就是特定的需求在 IjtagNetwork中如何实现】

这里所有的示例都是基于使用 ASCII text editor 来创建 DftSpecification 。(就是直接在文本编辑器中对 DftSpec 文件进行修改。)
-----------------------------------------------------------------------
1. Connection of a Basic Scan Instrument to a SIB
-----------------------------------------------------------------------
在该示例中,有一个带有单一 scan interface 的 instrument ,你想要将其连接到 SIB。

Instrument

在这里插入图片描述

DftSpecification

在这里插入图片描述

使用 ID 为 S3 的 SIB wrapper,并在 SIB wrapper 中声明 instrument 的设计实例的路径。

不需要指定 scan-in、scan-out 等其他控制端口,因为工具会从 ICL 模型描述中找到这些信息。

instance path 必须存在于设计中,因为 Dftspecification 只是按照指定内容将其连接起来,而不会创建新的 design instance。

Result

IJTAG network 中会插入一个 SIB 。该 SIB 控制 instrument 实例 design2_I1/instrumentB_I1 的 SelectPort “sel” 。

该 instrument 的的端口连接关系:

  • scan-out 被连接到 SIB 的第二个 scan-in;
  • scan-in 连接到和 SIB 的第一个 scan-in 端口一样的 IJTAG scan chain;

类似的,instrument 的 scan-、capture- 和 update- 控制端口连接到 SIB 对应接收这些控制信号的端口上。Tck 也是也是如此。

---------------------------------------------------------------------------------------------------
2. Creation of a a Scan Instrument With More Than One ScanInterface
---------------------------------------------------------------------------------------------------

在该示例中,instrument 有两个 ScanInterface 定义。如果使用和示例1中一样的语法,工具不知道将 SIB 连接到哪一个 scan ports。因此,在这种情况下,必须声明所连接的 ScanInterface 的名字。

Instrument

在这里插入图片描述

DftSpecification

在该示例中,将 ScanInterface P2 连接到了 SIB “S3”,P1 连接到其他地方。

Sin(S3)  {DesignInstance(design2_I1/instrumentC_I1) {scan_interface : P2 ;}
}

-------------------------------------------------------------
3. Connection of a Parallel Data Instrument
-------------------------------------------------------------

该示例展示如何将一个 instrument 的并行数据端口连接到 TDR。

Instrument

在这里插入图片描述

DftSpecification

将 instrument 连接到 TDR,使其成为 DftSpecification 的一部分。

Tdr(T3) {DataOutPorts {connection(6:0) : design2_I1/instrumentA_I1/INA[6:0] ;}DataInPorts {connection(7:0) : design2_I1/instrumentA_I1/OUT[7:0] ;}
}

Result

IJTAG network 中会有一个 8bit 的 TDR 寄存器。TDR 的 size 根据连接的需求自动确定确定

TDR 包含 8 个数据输入端口,7 个数据输出端口和所有常用的控制信号端口。

instrument 的 7 个最低位(即 7 个数据输入端口)连接到 TDR 的 7 个数据输出端口;相似的,instrument 的 8 个数据输出端口连接到 TDR的 八个数据输入端口。8bit 的 TDR 寄存器从中捕获数据。

-------------------------------------------------------------------------------------
4. Connection of a Parallel Data Instrument to the Top Level
-------------------------------------------------------------------------------------

该示例展示如何将 instrument 的并行数据端口连接到 top level 的数据端口。

Instrument

在这里插入图片描述

DftSpecification

IjtagNetwork {DataOutPorts {connection(6:0) : design2_I1/instrumentA_I1/INA[6:0] ;}DataInPorts {connection(7:0) : design2_I1/instrumentA_I1/OUTA[7:0] ;}
}

如果 top-level 的输入端口已经连接到其他设计的端口,但是你还是希望保留上面定义的连接关系。

在这种情况下,工具会在 connected instrument pins 的 parent instance 中自动插入一个 mux ,在 DftSpecification 中描述与原始连接和新插入的连接之间的切换。

如果连接的引脚是 floating 或者 tied,或者连接到引脚的 net没有 fan-in (multiplexing : auto),工具则不会插入 mux。

所插入的 mux 的 select 连接到 top-level 创建的 DataInPort。

如果想要强制工具总是在 top-level 输入端口和 instrument 的引脚之间插入一个 mux,无论是否需要,需要使用 multiplexing 参数。当然,你也可以强制工具不插入 mux。

在这里插入图片描述

--------------------------------------------------------------------------
5. Connection of a Parallel Data Instrument to a TDR
--------------------------------------------------------------------------

该示例将 instrument 的并行数据端口连接到 TDR,这个 TDR 会在 specification processing 过程中插入。同时,也展示了 multiplexing 参数的使用。

和示例4一样,工具也会分析是否需要插入 mux。不同的是,这里插入的 mux 的 select 端口是连接到插入的 TDR 上的一个额外的 DataOutPort。

DftSpecification

在这里插入图片描述

Result

TDR 的 size 根据连接关系的需求自动确定。在该示例中,IJTAG network 网络中会包含一个 9bit 的 TDR 寄存器:8 个数据输入端口、8 个数据输出端口和所有的控制信号端口。

TDR register 的低 7 位连接到 TDR 的低 7 位数据输出端口,然后连接到 instrument 的 7 个数据输入端口。

相似的, instrument 的 8 个数据输出端口连接到 TDR 的 8 个数据输入端口,然后有 TDR register 的低 8 位来捕获数据。

TDR register 的第 9bit 和第 8 个数据输出端口用于 mux 的 select line。

6. Creation of a TDR With More Bits Than Needed for the Current Specification

基于示例 5,该示例说明当 specification processing 中连接关系未知时,如何在 TDR 中保留额外的 bits。

可以使用参数 length 来指定 TDR register 的 bits 数,但是该数不能小于满足连接关系所需要的最小 bit 数。

DftSpecification

在这里插入图片描述

--------------------------------------------------
7. Connection of an EDT Controller
--------------------------------------------------

------------------------------------------------
8. Connection to a TAP Controller
------------------------------------------------

------------------------------------------------
9. Creation of a Hierarchy of SIBs
------------------------------------------------

-----------------------------------
10. Usage of a ScanMux
-----------------------------------

----------------------------------------------------------------------------------------------------
11. Move of a SIB, TDR, or ScanMux Deeper Into the Design Hierarchy
----------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------
12. Change of the Instance Name of a SIB, TDR, or ScanMux
--------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------
13. Change of the Design and ICL Port Names of a SIB, TDR, or ScanMux
--------------------------------------------------------------------------------------------------------

相关文章:

【Tessent IJATG Users Manual】【Ch5】IJTAG Network Insertion

The IJTAG Network Insertion FlowIJTAG Network Insertion ExampleModification of the IJTAG Network Insertion Flow How to Edit or Modify a DftSpecificationEdit or Modify MethodDftSpecification Examples IJTAG Network Insertion 可以将已有的 instrument 连接起来&…...

我在高职教STM32——I2C通信入门(2)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…...

GPT解逻辑数学题之8个8变1000的故事

目录 初试正解 我: GPT4: 再问思索 我: GPT4: 提醒错误 我: GPT4: 给出正解提示 我: GPT4: 不愿放弃 我: GPT4: 再次尝试 我: …...

10、MySQL-索引

目录 1、索引概述 2、索引结构 2.1 BTree 2.2 BTree 2.3 Hash 3、索引分类 4、索引语法 4.1 创建索引 4.2 查看索引 4.3 删除索引 5、SQL性能分析 5.1 SQL执行频率 5.2 慢查询日志 5.3 profile详情 5.4 explain执行计划 6、索引使用 6.1 验证索引效率 6.2 最左…...

【python】Python操作Redis数据库的详细教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

【数据结构的——红黑树】

目录 一、红黑树简介二、红黑树的特性三、2-3-4树与红黑树的等价关系四、红黑树的操作4.1、旋转操作4.2、红黑树的插入4.2.1、情形一4.2.2、情形二4.2.3、情形三4.2.4、情形四4.2.5、情形五4.2.6、情形六4.2.7、对插入进行小结4.3、红黑树的删除4.3.1、情形一4.3.2、情形二4.3.…...

第十二章:设置pod和容器权限-保障集群内节点和⽹络安全

本章内容包括: 在pod中使用宿主机节点的默认Linux命名空间以不同用户身份运行容器运行特权容器添加或禁用容器内核功能定义限制pod行为的安全策略保障pod的网络安全 谈到了如何保障API服务器的安全。如果攻击者获得了访问API服务器的权限,他们可以通过在…...

灵途科技再度入选2024年度“光谷瞪羚”企业名单!

今年5月,东湖高新区启动了2024年度“光谷瞪羚”企业认定工作,共有549家企业拟被认定为“光谷瞪羚”企业。作为泛自动驾驶领域光电感知专家,灵途科技凭借其快速成长、强大创新能力和巨大发展潜力,再次获得“光谷瞪羚”企业的荣誉。…...

Centos7.6配置阿里云镜像源

1、备份本地镜像源,将/etc/yum.repos.d/下所有文件备份到/etc/yum.repos.d/bak/下 2、下载阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 3、清除yum缓存-yum clean all 4、验证镜像源仓库 yum repolist...

梨子的功效与作用 梨子生吃熟吃功效竟大不同

梨,这一寻常的水果,因其独特的口感和丰富的营养价值,深受人们的喜爱。梨子不仅味道甜美,而且具有多种功效与作用,无论是生吃还是熟吃,都能给人体带来诸多益处。然而,你是否知道,生吃…...

北斗三号5G遥测终端机系统在水库大坝安全监测应用

一、概述 我国现有水库大坝9.8万余座,是世界上拥有水库大坝最多的国家。这些水库大坝在防洪、发电、供水、灌溉等方面发挥巨大效益的同时,所存在的安全风险不容忽视。大坝安全监测是大坝安全管理的重要内容,是控制大坝风险的重要措施。大坝安…...

代码随想录算法训练营第五十一天|99.岛屿数量 深搜 、99.岛屿数量 广搜、岛屿的最大面积

#99. 岛屿数量 深度优先搜索: 每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 本题思路:用遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都标记上。在遇到标记过的陆地节点和海洋…...

【c++刷题笔记-图论】day62:Floyd 算法、A * 算法精讲

Floyd 算法 重点&#xff1a;多源最短路径算法&#xff0c;前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径 时间复杂度&#xff1a; O(n^3)空间复杂度&#xff1a;O(n^2) #include <iostream> #include <vector> using namespace std…...

FPGA知识基础之--clocking wizard ip核的使用以及modelsim与vivado联合仿真

目录 前言一、ip核是什么&#xff1f;1.1 定义1.2 分类 二、为什么使用ip核2.1 ip核的优点2.2 ip核的缺点 三、如何使用ip核&#xff08;vivado&#xff09;四、举例&#xff08;clocking wizard ip核&#xff09;4.1 简介4.2 实验任务4.3 程序设计4.3.1 系统模块4.3.2 波形绘制…...

Java中的分布式日志与追踪

随着微服务架构的流行&#xff0c;分布式系统变得越来越复杂。在分布式系统中&#xff0c;日志和追踪是两个关键的工具&#xff0c;用于监控系统的健康状态、故障排除和性能优化。本文将详细探讨Java中的分布式日志与追踪&#xff0c;介绍相关的技术和工具&#xff0c;并通过代…...

案例精选 | 某省级妇幼保健院自动化安全运营中心建设成功实践

某省级妇幼保健院&#xff0c;是一所集医疗、保健、教学、科研、预防、康复于一体的省级三级甲等妇幼保健机构&#xff0c;专注于为全省妇女儿童提供全方位、高质量的医疗保健服务。医院拥有4个院区&#xff0c;总建筑面积10万平米&#xff0c;开放床位700张&#xff0c;年门诊…...

数字化时代:传统行业的转型之路在何方?

​在当前数字化时代的浪潮中&#xff0c;传统行业面临着新挑战与新机遇。为了在激烈的市场竞争中立足并谋求发展&#xff0c;传统行业的运营必须积极拥抱数字化转型。蚓链数字化解决方案帮助你总结如下。 数字化思维&#xff1a;开启转型之门的钥匙 数字化思维是传统行业转型的…...

【STM32系统】基于STM32设计的按键PWM控制舵机窗帘柜子门禁家居等控制系统——文末资料下载

演示视频 基于stm32设计的按键PWM控制舵机窗帘&柜子&门禁&家居等控制系统——完整资料下载 摘要 随着智能家居技术的不断发展&#xff0c;舵机在自动化家居设备中的应用变得越来越广泛。本文设计并实现了一种基于STM32单片机的按键PWM控制舵机系统。通过按键可以精…...

【生成式人工智能-八-大型语言模型的能力评估】

语言模型的能力评估 评估难度来自哪里输出没办法确定给出选择题本身就没标准答案 评估方法人力用语言模型来评估语言模型语言模型的偏爱 评估语言模型的数据集评估模型的不同能力阅读长文的能力心智测验道德性测试安全性测试 通常情况下我们想到的语言模型能力评估&#xff0c;…...

Qt ts文件详解

Qt ts文件&#xff08;Translation Source file&#xff1a;翻译源文件&#xff09;是Qt框架中用于存储翻译文本和相关上下文信息的一种特定格式文件&#xff0c;它是Qt Linguist&#xff08;语言家&#xff09;工具使用的基础。Qt Linguist是Qt开发工具包中的一个应用程序&…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...