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

【Xilinx Vivado 时序分析/约束系列10】FPGA开发时序分析/约束-FPGA DDR-Direct接口的 input delay 约束优化方法

目录DDR采样简述第一种模型不带PLL实际操作总结约束实际工程顶层代码时钟约束input delay约束查看时序报告解决办法添加原语原语解释查看时序报告时序分析总结往期系列博客DDR采样简述在之前分析了SDR采样也就是单边采样接下来介绍DDR采样也就是双边采样在实验应用中DDR采样也是很广泛的比如CMOS、DRAM、ADC、千兆以太网等都是DDR接口的因此也需要去分析时序是否正确学会如何去进行时序约束。在SDR中介绍了两种时序模型一种是带有PLL的时序模型另外一种是不带PLL的时序模型。在DDR中也是一样的同样存在这两种模型。同样是上游器件和下游器件下游器件是FPGA上游器件可以是以太网接口或者是ADC等。其中存在的延迟也在图中有呈现。在分析时默认PCB数据路径延迟Td_bd和PCB时钟路径延迟Tc_bd是一致的因此在分析到达FPGA管脚的时钟和数据的状态时只需要知道在上游器件的管脚的时钟和数据的状态就可以对FPGA的时钟和数据进行约束分析时钟和数据的相位关系即可。第一种模型不带PLL首先分析第一种时序模型不带有PLL的时序模型。在SDR中由上升沿作为发射沿下一个上升沿作为采样沿同时作为下一个数据的发射沿。存在上升沿时刻的最大、最小值。在DDR中由上升沿作为发射沿同一周期中的下一个下降沿作为采样沿同时作为下一个数据的发射沿。与SDR还有一点不同的是DDR不仅存在上升沿时刻的最大、最小值还存在下降沿时刻的最大、最小值。因为上升沿和下降沿都会被作为发射沿和采样沿。同时还可以发现上升沿的最大最小的范围和下降沿的最大最小范围是不一定相同的。此时序模型是不加PLL的并且采用的是边沿采样也就是说当前下降沿采样的数据是由上一个上升沿发射出来的下一个上升沿采样的数据是由上一个下降沿发射出来的。因此就可以得到发射沿和采样沿的关系两者可以说是相互补的如果发射沿为上升沿那么采样沿就为下降沿如果发射沿为下降沿那么采样沿就为上升沿。后面在Vivado中分析时序时就可以按照这种方式看。实际操作以一个实际的例子进行分析以下是索尼的一款CMOS器件的手册其中它的输出包括SDR和DDR在之前已经分析并实操了它的SDR的采样模式这次就看它的DDR采样模式。时钟频率为54Mhz即周期为18.519ns半周期为9.259ns。在参数表中可以看到Max skew为2ns因此从图中可以看出第一个下降沿作为采样沿时的数据是由上一个上升沿发射出来的此时图中箭头1所指的时刻为input delay的最小值而箭头2的时刻为input delay的最大值同样的当第一个下降沿作为发射沿发射数据时下一个上升沿作为采样沿此时的input delay的最大、最小值分别为箭头3、4所指的时刻。总结约束Rise Max T/2 skew_afe 9.259ns 2ns 11.259nsRise Min T/2 - skew_afe 9.259ns - 2ns 7.259nsFall Max T/2 skew_afe 9.259ns 2ns 11.259nsFall Min T/2 - skew_afe 9.259ns - 2ns 7.259ns实际工程利用之前的工程继续做DDR的约束顶层代码module top_ioddr( input wire rx_clk, input wire rx_ctrl, input wire [3:0] rx_dat, //tx output wire tx_clk, output wire [3:0] tx_d, output wire tx_dv, input wire sdrclk, input wire [3:0] sdrdata, input wire sdrden, input wire sysclk, output reg tout ); wire rst; wire rx_clk_90; wire rx_en; wire [7:0] rx_data; reg tx_en1,tx_en2; reg [7:0] tx_data1,tx_data2; wire sdrclk1; assign rst 0; assign sdrclk1 sdrclk; always (posedge rx_clk_90 or posedge rst) begin if (rst 1b1) begin tx_data1 d0; end else if (rx_en 1b1) begin tx_data1 rx_data rx_data -1; end end always (posedge rx_clk_90 or posedge rst) begin if (rst 1b1) begin tx_data2 d0; end else if (tx_en1 1b1) begin tx_data2 tx_data1 tx_data1 -5; end end always (posedge rx_clk_90 ) begin tx_en1 rx_en; end always (posedge rx_clk_90 ) begin tx_en2 tx_en1; end iddr_ctrl inst_iddr_ctrl ( .rx_clk_90 (rx_clk_90), .rst (rst), .rx_dat (rx_dat), .rx_ctrl (rx_ctrl), .rx_en (rx_en), .rx_data (rx_data) ); oddr_ctrl inst_oddr_ctrl ( .sclk (rx_clk_90), .tx_dat (tx_data2), .tx_en (tx_en2), .tx_c (rx_clk_90), .tx_data (tx_d), .tx_dv (tx_dv), .tx_clk (tx_clk) ); //sdr clock domain reg [3:0] sdrdata_r1,sdrdata_r2; reg sdrden_r1,sdrden_r2; always (posedge sdrclk1 ) begin {sdrdata_r2,sdrdata_r1} {sdrdata_r1,sdrdata}; end always (posedge sdrclk1 ) begin {sdrden_r2,sdrden_r1} {sdrden_r1,sdrden}; end always (posedge sdrclk1) begin if(sdrden_r2 1b1) begin tout (sdrdata_r1)|(sdrdata_r2); end else begin tout (^sdrdata_r2); end end endmodule其他模块的代码和之前的工程一致这里就不添加进来了对工程做布局布线完成后打开布线设计打开之后点击编辑时序约束时钟约束input delay约束这里要对四个input delay进行约束分别为上升沿的max、min和下降沿的max、min约束内容为以下Rise Max T/2 skew_afe 9.259ns 2ns 11.259ns Rise Min T/2 - skew_afe 9.259ns - 2ns 7.259ns Fall Max T/2 skew_afe 9.259ns 2ns 11.259ns Fall Min T/2 - skew_afe 9.259ns - 2ns 7.259ns上升沿的最大值上升沿的最小值下降沿的最大值注意在对下降沿进行约束时在图中箭头所指的参数需要勾选表示此约束是否会覆盖之前上升沿所做的约束因为本次实验是DDR双沿采样上升沿和下降沿既作发射沿也作采样沿因此在定义下降沿约束时需要作不覆盖之前约束的操作而之前的SDR则不需要。下降沿的最小值同样需要作不覆盖处理此种边缘对齐的时序模型是不带有PLL的情况促使布线工具尽量增加时钟布线延迟也就是图中使时钟尽可能的向右移动使得建立时间满足要求。此时的XDC约束文件为set_property IOSTANDARD LVCMOS33 [get_ports rx_clk] set_property PACKAGE_PIN J19 [get_ports rx_clk] set_property PACKAGE_PIN H22 [get_ports rx_ctrl] set_property IOSTANDARD LVCMOS33 [get_ports rx_ctrl] set_property PACKAGE_PIN K22 [get_ports {rx_dat[0]}] set_property PACKAGE_PIN K21 [get_ports {rx_dat[1]}] set_property PACKAGE_PIN J22 [get_ports {rx_dat[2]}] set_property PACKAGE_PIN J20 [get_ports {rx_dat[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rx_dat[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {rx_dat[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {rx_dat[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {rx_dat[0]}] set_property PACKAGE_PIN M18 [get_ports tx_dv] set_property IOSTANDARD LVCMOS33 [get_ports tx_dv] set_property PACKAGE_PIN K18 [get_ports tx_clk] set_property IOSTANDARD LVCMOS33 [get_ports tx_clk] set_property PACKAGE_PIN M22 [get_ports {tx_d[0]}] set_property PACKAGE_PIN L18 [get_ports {tx_d[1]}] set_property PACKAGE_PIN L19 [get_ports {tx_d[2]}] set_property PACKAGE_PIN L20 [get_ports {tx_d[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {tx_d[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {tx_d[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {tx_d[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {tx_d[0]}] set_property PACKAGE_PIN W19 [get_ports sdrclk] set_property PACKAGE_PIN Y22 [get_ports sdrden] set_property PACKAGE_PIN V20 [get_ports {sdrdata[0]}] set_property PACKAGE_PIN U20 [get_ports {sdrdata[1]}] set_property PACKAGE_PIN AB22 [get_ports {sdrdata[2]}] set_property PACKAGE_PIN AB21 [get_ports {sdrdata[3]}] set_property IOSTANDARD LVCMOS33 [get_ports sdrclk] set_property IOSTANDARD LVCMOS33 [get_ports {sdrdata[*]}] set_property IOSTANDARD LVCMOS33 [get_ports sdrden] set_property PACKAGE_PIN Y21 [get_ports tout] set_property IOSTANDARD LVCMOS33 [get_ports tout] set_property PACKAGE_PIN Y18 [get_ports sysclk] set_property IOSTANDARD LVCMOS33 [get_ports sysclk] create_clock -period 18.518 -name sdrclk -waveform {0.000 9.259} [get_ports sdrclk] set_input_delay -clock [get_clocks *] -rise -max 2.000 [get_ports {{sdrdata[0]} {sdrdata[1]} {sdrdata[2]} {sdrdata[3]} sdrden}] set_input_delay -clock [get_clocks *] -rise -min -2.000 [get_ports {{sdrdata[0]} {sdrdata[1]} {sdrdata[2]} {sdrdata[3]} sdrden}] create_clock -period 18.518 -name rx_clk -waveform {0.000 9.259} [get_ports rx_clk] set_input_delay -clock [get_clocks rx_clk] -rise -max 11.259 [get_ports {rx_ctrl {rx_dat[0]} {rx_dat[1]} {rx_dat[2]} {rx_dat[3]}}] set_input_delay -clock [get_clocks rx_clk] -rise -min 7.259 [get_ports {rx_ctrl {rx_dat[0]} {rx_dat[1]} {rx_dat[2]} {rx_dat[3]}}] set_input_delay -clock [get_clocks rx_clk] -clock_fall -fall -max -add_delay 11.259 [get_ports {rx_ctrl {rx_dat[0]} {rx_dat[1]} {rx_dat[2]} {rx_dat[3]}}] set_input_delay -clock [get_clocks rx_clk] -clock_fall -fall -min -add_delay 7.259 [get_ports {rx_ctrl {rx_dat[0]} {rx_dat[1]} {rx_dat[2]} {rx_dat[3]}}]重新对工程进行布局布线然后打开布线设计此时就看到时序出现了违例。查看时序报告report timing看具体的时序报告针对rx_clk进行分析在number of paths per group选择100number of paths per endpoint选择10都尽可能的选大一些number of paths per group表示显示多少组的时序报告分析从最差开始排列number of paths per endpoint表示选择的是有多少种的发射采样关系比如上升沿发射下降沿采样这就是一种关系也有下降沿发射上升沿采样这也是一种关系。在这里设定为10中但实际没有10种因此会把所有的种类都显示出来。可以看到建立时间出现了违例保持时间是正常的点开path1查看时序报告数据时间到达的时间为11.714ns时钟实际到达的时间为10.727ns数据达到的时间比时钟达到的时间长说明时钟的布线过于短数据比时钟晚到因此时钟采不到数据造成建立时间的违例。应想办法尽量延长时钟的布线。解决办法在之前的input delay中进行的约束只是表述了时钟和数据的关系告诉时序约束工具需要帮我们实现怎样的数据时钟关系但是工具也可能做不到这时候就需要人为的添加代码手动的延长时钟的延时以满足时序要求。添加原语在左侧菜单栏中点击原语依次选择以下选项在顶层文件中添加其中的原语内容同时将assign rx_clk_90 rx_clk这句代码内容注释。原语解释原语中的有每句的解释这句原语的目的很简单就是为了让时钟中的延时增大可以看到原语中让输入时钟rx_clk先通过IDATAIN然后经过一段时间的延时再从DATAOUT给到rx_clk_90作为输出时钟这其中的延时时间长短可以通过IDELAY_VALUE这个参数进行设定这里先设定为18.IDELAYCTRL IDELAYCTRL_inst ( .RDY(RDY), // 1-bit output: Ready output .REFCLK(sysclk), // 1-bit input: Reference clock input .RST(1b0) // 1-bit input: Active high reset input ); IDELAYE2 #( .CINVCTRL_SEL(FALSE), // Enable dynamic clock inversion (FALSE, TRUE) .DELAY_SRC(IDATAIN), // Delay input (IDATAIN, DATAIN) .HIGH_PERFORMANCE_MODE(FALSE), // Reduced jitter (TRUE), Reduced power (FALSE) .IDELAY_TYPE(FIXED), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE .IDELAY_VALUE(18), // Input delay tap setting (0-31) .PIPE_SEL(FALSE), // Select pipelined mode, FALSE, TRUE .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0). .SIGNAL_PATTERN(CLOCK) // DATA, CLOCK input signal ) IDELAYE2_inst_dv ( .CNTVALUEOUT(), // 5-bit output: Counter value output .DATAOUT(rx_clk_90), // 1-bit output: Delayed data output .C(1b0), // 1-bit input: Clock input .CE(1b0), // 1-bit input: Active high enable increment/decrement input .CINVCTRL(1b0), // 1-bit input: Dynamic clock inversion input .CNTVALUEIN(5d0), // 5-bit input: Counter value input .DATAIN(1b0), // 1-bit input: Internal delay data input .IDATAIN(rx_clk), // 1-bit input: Data input from the I/O .INC(1b0), // 1-bit input: Increment / Decrement tap delay input .LD(1b0), // 1-bit input: Load IDELAY_VALUE input .LDPIPEEN(1b0), // 1-bit input: Enable PIPELINE register to load data input .REGRST(1b0) // 1-bit input: Active-high reset tap-delay input );查看时序报告重新布局布线然后reload并report timing查看时序报告操作和之前的一样。可以看到时序恢复了正常点开path101路径查看详细的时序报告。时序分析以建立时间分析为例保持时间的分析方法是一样的。数据实际到达的时间为11.714ns时钟实际到达的时间为12.832ns与之前的作比较可以看到时钟到达的时间明显增大了其中增大的部分就是刚刚添加原语的部分红框中的IDELAY2这部分的延时有1.556ns。根据建立时间的计算公式可以得出建立时间余量为1.119ns满足时序的要求。总结当以第一种模型分析也就是不带有PLL的模型分析时如果按照我们设定的约束时序约束工具无法达到我们的要求这时候就需要人为的更改代码比如添加原语来增大时钟或数据的延时来满足时序要求。往期系列博客【Xilinx Vivado时序分析/约束系列1】FPGA开发时序分析/约束-寄存器间时序分析【Xilinx Vivado时序分析/约束系列2】FPGA开发时序分析/约束-建立时间​​​​​​【Xilinx Vivado时序分析/约束系列3】FPGA开发时序分析/约束-保持时间【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操【Xilinx Vivado时序分析/约束系列5】FPGA开发时序分析/约束-IO时序分析【Xilinx Vivado时序分析/约束系列6】FPGA开发时序分析/约束-IO时序输入延时【Xilinx Vivado时序分析/约束系列7】FPGA开发时序分析/约束-FPGA单沿采样数据input delay时序约束实操【Xilinx Vivado时序分析/约束系列8】FPGA开发时序分析/约束-FPGA数据中间采样、边缘采样PLL时序优化实操【Xilinx Vivado时序分析/约束系列9】FPGA开发时序分析/约束-FPGA单沿数据input delay边沿对齐不同时序模型实操练习

相关文章:

【Xilinx Vivado 时序分析/约束系列10】FPGA开发时序分析/约束-FPGA DDR-Direct接口的 input delay 约束优化方法

目录 DDR采样简述 第一种模型(不带PLL) 实际操作 总结约束 实际工程 顶层代码 时钟约束 input delay约束 查看时序报告 解决办法 添加原语 原语解释 查看时序报告 时序分析 总结 往期系列博客 DDR采样简述 在之前分析了SDR采样&#xff…...

SAP ML81N消息号SE729提示用户定制被错误的维护的解决方案

SAP PS模块日常解决方案 文章目录SAP PS模块日常解决方案前言在SAP使用过程中,服务类的采购订单在使用ML81N进行服务确认操作时,已经操作成功,但是系统会提示消息号SE729:提示用户定制被错误的维护。 注意:以下内容是基…...

构建画面记忆法

目录:一、十二地支记忆二、十天干记忆三、51位圆周率记忆文|随意的风:联锁拍照,产生一幅一幅的图片,将图片以故事摄影方式联系在一起。将右脑充分开发出来。一、十二地支记忆1、饺子,交子,夜半子时。半夜里…...

CorelDRAW_X6使用汇总

目录: 一、软件的下载、安装与注册 1、软件下载 2、软件注册 二、软件的使用 1、页面布局 2、坐标原点设置在图纸的中心 3、标注尺寸 4、颜色处理 5、合并对象为一个单元 6、导角 7、文字的添加与修改 8、图形绘制 9、对象的图层切换 10、图形去描边、…...

COMSOL多物理场/FDTD时域有限差分/ RSoft光电器件仿真设计“ 几十种案例解析,助您掌握光电器件仿真模拟

光电作为物理类专业课程中极为重要的一部分,其教学内容一直受到各个高校的重视。结合目前许多学生对实验开展的痛难点,将软件仿真引入实验当中,通过软件的可视化处理有效直观的展示光电仿真的流程,与实验数据结合,使得…...

【Verilog】布斯算法(Booth Algorithm)乘法器的 Verilog 实现

目录 布斯算法介绍 计算步骤 计算流程图 举个栗子 Verilog 实现 设计思想 Verilog 代码 TestBench 代码 仿真波形 布斯算法介绍 Booth 的算法检查有符号二的补码表示中 N位乘数 Y 的相邻位对,包括低于最低有效位 y−1 0 的隐式位。对于每个位 yi&#xf…...

【HDLBits 刷题 13】Buliding Larger Circuits

目录 写在前面 Buliding Larger Circuits count1k shiftcount fsm seq fsmshift fsm fancytimer fsm onehot 写在前面 以下的解题方法不一定为最佳解决方案,有更好的方法欢迎提出,共同学习,共同进步! Buliding Larger …...

无符号类型给有符号类型赋值符号位的问题

记一次bug问题分析问题 再写modbus通信协议解析的时候遇到一个问题,计算CRC的时候返回值是一个unsigned short,接受的时候我定义的结构体里的CRC是一个有符号 short,也是头一次遇到有无符号位的问题。下面我把具体代码贴出来。 if(pModbusWr…...

【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9

目录 写在前面 Finite State Manchines Fsm1 Fsm1s Fsm2 Fsm2s Fsm3comb Fsm3onehot Fsm3 Fsm3s Design a Moore FSM 写在前面 HDLBits 刷题来到了最为重要的一部分---有限状态机,都说 Verilog 设计的精髓就是状态机的设计,可见状态机设计的重…...

【接口协议】FPGA 驱动 VGA 显示实验(二)实验设计部分

目录 实验任务 实验环境 实验设计 程序设计 VGA 时序模块 模块框图 仿真波形 顶层模块 约束文件 实验任务 利用FPGA驱动VGA实现彩条显示,分辨率为800 60060Hz,分别显示三种颜色。 实验环境 开发环境:vivado 2021.2 FPGA 器件&a…...

【接口协议】FPGA 驱动 VGA 显示实验(一)原理部分

目录 VGA介绍 VGA 接口管脚 VGA 色彩原理 VGA 工作原理 VGA 时序 VGA介绍 VGA(Video Graphics Array)视频图形阵列是 IBM 于 1987 年提出的一个使用模拟信号的电脑显示标准。VGA 接口即电脑采用 VGA 标准输出数据的专用接口。VGA 接口共有 15 针&am…...

COMSOL单相变压器温度场三维模型:解析热点温度与流体流速分布

comsol单相变压器温度场三维模型,可以得到变压器热点温度,流体流速分布 搞变压器温度场仿真最头疼的就是三维流固耦合。去年做配电变压器温升项目时,硬是跟COMSOL死磕了两周才摸到门道。今天给大家分享下怎么用非等温流接口抓取热点温度和油…...

【牛客网刷题】VL3 奇偶校验

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 题目描述 奇偶校验 题目分析 仿真结果 题目描述 现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验&a…...

【牛客网刷题】VL2 异步复位的串联T触发器

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 题目描述 题目分析 Verilog 代码 testbench 代码 仿真结果 题目描述 用verilog实现两个串联的异步复位的T触发器的逻辑&#x…...

minio安装 后台自启动

1:下载miniowget https://dl.min.io/server/minio/release/linux-amd64/minio2:授权chmod x minio3:设置开机自启动进入该目录下cd /etc/systemd/system/ 创建minio.service文件1: cd /etc/systemd/system/ 2:touch mi…...

【BBF系列协议】Data Models Library数据模型库设计与实现

目录Data Models Library (dmlib)dmlib的设计dmlib 的代码结构:dmlib 主要数据结构操作上下文对象(dmctx)对象定义(DMOBJ)参数定义(DMLEAF)多实例遍历函数实现(browseinstobj)参数树…...

基于JS实现的鸿蒙游戏——二十四点纸牌

目录 前言 概述 正式开始 一、创建项目 二、编码 1.项目结构 2.实现思路 3.主要代码块 三、页面及功能展示 1.运算正确 2.运算错误 3.换一批及重置 本人项目仓库链接 前言 相信大家都有玩过纸牌游戏,本项目是基于JS实现的鸿蒙小游戏二十四点纸牌&…...

vue截取字符串(商城系统非常常用的小知识)

1.截取指定字符串{{row.real_name.substr(2, 3)}}2.截取字符串最后一位{{row.real_name.charAt(row.real_name.length - 1)}}3.看一下效果如何...

【BBF系列协议】TR-140 TR-069支持存储服务的设备的数据模型

目录TR-140 TR-069支持存储服务的设备的数据模型执行摘要1.目的和范围目的范围2 案例2.1 BASIC MANAGED STORAGE SERVICE(基本托管存储服务)2.2 REMOTE STORAGE BACK-UP SERVICE(远程存储备份服务)2.3 Remote access of Storage S…...

【BBF系列协议】TR-135 支持TR-069的STB的数据模型

TR-135 支持TR-069的STB的数据模型 执行摘要 TR-135,启用TR-069的STB的数据模型,定义了用于通过TR-069和TR-106中定义的CWMP远程管理机顶盒(STB)设备上的数字电视(IPTV或广播)功能的数据模型。它包括用于…...

【BBF系列协议】TR-106 CWMP端点和USP代理的数据模型模板

目录TR-106 CWMP端点和USP代理的数据模型模板执行摘要1 介绍CWMPUSP规范结构2 架构2.1 数据层次结构2.2 对象版本控制2.3 配置文件2.4 DEPRECATED 和 OBSOLETED 条目3 对象定义3.1 通用符号3.2 数据类型和表示3.3 供应商特定要素A参数:单个实例对象:单个命令:单个事…...

【亲测免费】【推荐】基于Vue3的全能H5模板:vue3-h5-template

标题:【推荐】基于Vue3的全能H5模板:vue3-h5-template 【免费下载链接】vue3-h5-template My starter template for Vue3, with vite, quark design, sass(含viewport 适配方案, axios 封装) 项目地址: https://gitcode.com/gh_mirrors/vue3/vue3-h5-t…...

Scalding执行模型揭秘:从Job到Execution的演进之路

Scalding执行模型揭秘:从Job到Execution的演进之路 【免费下载链接】scalding A Scala API for Cascading 项目地址: https://gitcode.com/gh_mirrors/sc/scalding Scalding是一个基于Scala的Cascading API,专为大规模数据处理而设计。这个强大的…...

探索DockerGS:一键启动动漫游戏服务器的利器

探索DockerGS:一键启动动漫游戏服务器的利器 【免费下载链接】DockerGS DockerGC is a container that run Grasscutter (anime game) with just a single command. 项目地址: https://gitcode.com/gh_mirrors/do/DockerGS 在数字娱乐的世界中,各…...

推荐项目:IdentityServer4.AccessTokenValidation - 混合型JWT和参考令牌验证利器

推荐项目:IdentityServer4.AccessTokenValidation - 混合型JWT和参考令牌验证利器 【免费下载链接】IdentityServer4.AccessTokenValidation IdentityServer Access Token Validation for ASP.NET Core 项目地址: https://gitcode.com/gh_mirrors/id/IdentityServ…...

推荐:用Flowershow打造你的优雅知识分享网站

推荐:用Flowershow打造你的优雅知识分享网站 【免费下载链接】flowershow 💐 Publish your obsidian digital garden or any markdown site easily and elegantly. 项目地址: https://gitcode.com/gh_mirrors/fl/flowershow 1、项目介绍 &#x…...

RITM 交互式分割项目使用教程

RITM 交互式分割项目使用教程 【免费下载链接】ritm_interactive_segmentation 项目地址: https://gitcode.com/gh_mirrors/rit/ritm_interactive_segmentation 1. 项目的目录结构及介绍 RITM 交互式分割项目的目录结构如下: ritm_interactive_segmentati…...

RITM交互式分割算法实战指南

RITM交互式分割算法实战指南 【免费下载链接】ritm_interactive_segmentation 项目地址: https://gitcode.com/gh_mirrors/rit/ritm_interactive_segmentation 项目介绍 RITM(Real-Time Interactive Image Segmentation with Memory-Augmented U-Net&#…...

从论文到代码:Performer核心公式的PyTorch逐行实现

从论文到代码:Performer核心公式的PyTorch逐行实现 【免费下载链接】performer-pytorch An implementation of Performer, a linear attention-based transformer, in Pytorch 项目地址: https://gitcode.com/gh_mirrors/pe/performer-pytorch Performer是一…...

Jupyter Notify 使用教程

Jupyter Notify 使用教程 【免费下载链接】jupyter-notify A Jupyter Notebook magic for browser notifications of cell completion 项目地址: https://gitcode.com/gh_mirrors/ju/jupyter-notify 项目介绍 Jupyter Notify 是一个为 Jupyter Notebook 设计的扩展&…...