首页 > 其他分享 >场景描述--system verilog的场景搭建

场景描述--system verilog的场景搭建

时间:2024-04-09 23:23:53浏览次数:29  
标签:场景 run name -- system scene ideal video

模板-V1

模型功能

  1. 建立场景的概念
  2. 实现场景的信号传输
  3. 明确场景的描述内容

模型框图

场景与实际情况的对应

实现步骤

场景的概念

  • 场景是仿真针对的情况的一种综合描述
  • 一般仿真场景和实际场景相对应,且由简单到复杂分布
  • 比如,从最理想的数据模型,到引入随机数的干扰模型,再到最后的实际场景采集数据的模型
  • 仿真场景就是逐步逼近实际应用场景的描述文件

场景信号传输的实现

  1. 总线信号的导入
  • 一个场景需要驱动整个逻辑的所有输入,所以需要使用上一章使用的总线去实现,以保证场景的稳定拓展
//  Class: video_scene_ideal
//
class video_scene_ideal;
    //  Group: Variables
    string name;
    virtual video_interface video_itf;
    
    //  Group: Constraints


    //  Group: Functions

    //  Constructor: new
    function new(
        string name = "video_scene_ideal",
        virtual video_interface video_itf
    );
        this.name = name;
        this.video_itf = video_itf; //get scene need itf to class
    endfunction: new
    extern task run_scene_single(
        input integer mode 
    );

endclass: video_scene_ideal
task video_scene_ideal::run_scene_single(
    input integer mode 
);
fork
    begin //note
    $display("--------------------------------------------------",name);
    $display("now run scene: %s ; task is run_scene_single ;",name);
    end 
    //add phase run 
    
join
endtask:run_scene_single

  1. 注册到public_libs.svh中
// ######################################################################
// lib include

`include "../public_interface/video_interface.sv"

// ######################################################################
// lib of scene
`include "../video_scene/video_scene_ideal.sv"

  • 必须在interface文件后面,因为后引入的文件可以调用先引入的文件
  1. 在顶层运行空场景
// --------------------------------------------------------------------
// add scene run 
string name;
video_scene_ideal sce_ideal;
initial 
begin
    #100
    name = "video_scene_ideal";
    $display("==========================================");
    $display("top: run scene is %s ;", name);
    sce_ideal = new(name,src_video_itf);
    
    #1000
    $display("==========================================");
    $display("top: run scene stop ;");
    $stop();
end

场景描述的内容

层次 负责的内容
top 调用场景,当仿真目标发生改变时,则新建场景
scene 调用驱动,并行运行各个部分,可以利用驱动进行复杂的排列组合,尽可能接近场景的复杂度
phase 驱动信号,提供某个总线的信号级别的控制,以满足场景拟合的需求

最终效果

提供场景描述的文件框架

  • 目前的场景规划由于缺少具体的模型,很难得到一个准确的划分
    • 暂时以单场景、多片段,多对象阶段的模型进行说明
      1. 单场景,即仿真场景始终处于理想场景
      2. 多片段,即在场景中分解出常见的关联阶段组成片段
      3. 多对象阶段,就是将总线的驱动在总线运行阶段进行细分,从而满足场景的调用需求
    • 保持1-n-n的结构,有利于增强仿真的适应性

调用接口

暂不更新,等内容更多时再更新

标签:场景,run,name,--,system,scene,ideal,video
From: https://www.cnblogs.com/electricdream/p/18124965

相关文章

  • 2024/4/9
    今天大盘还是没有起来,低开低走,微盘勉强收红。全天权重低迷,小票走势比大票好,黄线在白线上面,要不是短线资金的支撑,恐怕今天会跌的很难看,甚至引起恐慌,但是有一点,今天成交8000多亿,缩量了,也就是说市场里的资金少了,这是一个很不乐观的信号,本来就是存量资金博弈,现在资金更少了,总的来说市......
  • 创建型模式--单例模式
    创建型模式--单例模式简介:单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象(例如数据库连接池)。单例模式......
  • 你真会判断DataGuard的延迟吗?
    这是一个比较细节的知识点,但必须要理解这个才能准确判断OracleADG的延迟情况。以前做运维工作时,记得是要同时重点关注v$dataguard_stats视图中的几个字段的值,分别是:NAME、VALUE、TIME_COMPUTED、DATUM_TIME。本文先不考虑v$dataguard_stats视图没有数值显示的特殊情况,只针对当v......
  • 协程杂记
    协程杂记协程是什么协程是一种协作式多任务模型,不同于线程的抢占式多任务模型。协程是由程序员自己控制的,可以在任意时刻挂起或者恢复一个协程,更适合于用来实现彼此熟悉的程序组件。在通常使用线程的情景中,负责处理不同任务的线程之间存在着数据竞争,使用加锁可以解决问题,但其实......
  • 组合数学
    生成函数使用母函数的方法求谢列数列的通项\(a_n.\)\((1)a_0=2,a_1=5,a_{n+2}=3a_{n+1}-2a_n(n=0,1,2,\cdots);\)解:设\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+\cdots.\)则:\(\qquad-3f(x)=-3a_0x-3a_1x^2-3a_2x^3-\cdots.\)\(\quad\quad\qquad\qquad2f(x)=+2a_0x^2+2a_1x^3+2a_2x......
  • MongoDB的一次奇妙查询
    这段时间遇到了一个业务需求,我有一些关于书籍的文档数据存储在MongoDB数据中,然后在修复数据之后,需要用一个查询去验证更新是否成功。书籍数据大概长这个样子:{"books":[{"name":"UbuntuMeta","sku_id":"101","price":30.5},{&q......
  • c#重载
    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespace方法重载{classarea{publicstaticdoubleAREA(doubler){doublepi=3.14,j=0;j=r*r*pi;returnj;}......
  • C. Rings
    原题链接题解不仅要学会怎么打cf,还要学会怎么解决问题:把条件写下来,对着条件写,然后对着程序在脑海中充分模拟code#include<bits/stdc++.h>usingnamespacestd;chars[20005];intmain(){intt;cin>>t;while(t--){intn;cin>>n;......
  • 最大连续子数组和的实现
    题目:最大连续子数组和求解问题一、背景:问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为:Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如,当(a[1],a[2],a[3......
  • 了解python的装饰器特性
    装饰器相当于一个装饰,不修改函数原本内容,只是增添内容defmy_decorator(func):defwarpper():print("有函数要执行了")func()print("有函数执行完毕")returnwarpper@my_decoratordefsay_hello():print("hello")say_hello()......