首页 > 编程语言 >UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添加classpath++ ${1+$@}的用法+uvm1.1和uvm1.2的st

UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添加classpath++ ${1+$@}的用法+uvm1.1和uvm1.2的st

时间:2024-03-12 09:15:40浏览次数:21  
标签:java merge args odt subprocess content 命令 UVM txt

UVM宏解释

UVM_DISABLE_AUTO_ITEM_RECORDING

https://blog.csdn.net/MGoop/article/details/127295965
item record的方法主要是用于记录事务信息的,原理是调用accept_tr, begin_tr, end_tr。似乎和波形上显示出各个事务相关。
默认情况下,在调用get_next_item()和item_done()时自动执行项目记录。然而,这只适用于简单的、按顺序的阻塞事务执行。对于流水线和乱序事务执行,驱动程序必须关闭此自动记录,并在适当的时间点显式调用uvm_transaction::accept_tr、uvm_transaction::begin_tr和uvm_transaction::end_tr。该方法在run_phase()方法的开头调用。一旦禁用,将无法重新启用。为了向前兼容,可以通过定义UVM_DISABLE_AUTO_ITEM_RECORDING来全局关闭记录。

UVM_PACKER_MAX_BYTES

在UVM的源码中:uvm-1.2\src\macros\uvm_global_defines.svh
大小4k

//------------------------
//
// MACRO: `UVM_MAX_STREAMBITS
//
// Defines the maximum bit vector size for integral types. 
// Used to set uvm_bitstream_t

`ifndef UVM_MAX_STREAMBITS
 `define UVM_MAX_STREAMBITS 4096
`endif


// MACRO: `UVM_PACKER_MAX_BYTES
//
// Defines the maximum bytes to allocate for packing an object using
// the <uvm_packer>. Default is <`UVM_MAX_STREAMBITS>, in ~bytes~.

`ifndef UVM_PACKER_MAX_BYTES
 `define UVM_PACKER_MAX_BYTES `UVM_MAX_STREAMBITS
`endif

odt文件转doc

https://blog.csdn.net/weixin_41712499/article/details/107656792
使用libreoffice的软件:

libreoffice --headless --convert-to doc path-to-your-doc.doc

merge命令和difflib

https://www.uc23.net/command/337.html
merge命令是三个操作数的命令,操作参数分别是:mod1.txt orig.txt mod2.txt,合并结果存入mod1.txt文件中。如果是使用python脚本,则使用difflib库实现合并,后者的合并只需要mod1.txt和mod2.txt。

merge 例子

假设我们有一个名为orig.txt的文件,其中包含以下内容。

Apples are red.
Oranges are orange.
Blueberries are delicious.

新建一个文件mod1.txt,是修改后的版本orig.txt:

Apples are obviously red.
Oranges are blue.
Blueberries are delicious.

新建mod2.txt的文件,也是orig.txt的修改版本:

Apples are obviously red.
Oranges are NOT blue.
Blueberries are delicious.

然后运行合并,如下所示:

merge mod1.txt orig.txt mod2.txt

它将分析所有三个文件,写入mod1.txt,并显示以下警告:
merge: warning: conflicts during merge
这意味着合并成功,但是我们应该意识到存在冲突。如果打开mod1.txt(默认情况下是写入合并的文件),则会发现它现在包含以下文本:

<<<<<<< mod1.txt
Apples are obviously red.
Oranges are blue.
=======
Apples are obviously red.
Oranges are NOT blue.
>>>>>>> mod2.txt
Blueberries are delicious.

由我们决定保留哪个,然后手动对文件进行编辑。

difflib的例子

由gpt生成,原理大体可用。

import difflib

def merge_files(file1_content, file2_content):
    differ = difflib.Differ()
    diff = list(differ.compare(file1_content.splitlines(), file2_content.splitlines()))

    merged_content = []
    for line in diff:
        if line.startswith('? '):  # Lines that are common to both files
            merged_content.append(line[2:])
        elif line.startswith('- '):  # Lines unique to file1
            merged_content.append(line[2:])
        elif line.startswith('+ '):  # Lines unique to file2
            merged_content.append(line[2:])
        else:  # Lines common to both files
            merged_content.append(line[2:])

    return '\n'.join(merged_content)

# 读取两个文件的内容
with open('file1.txt', 'r') as file1:
    file1_content = file1.read()

with open('file2.txt', 'r') as file2:
    file2_content = file2.read()

# 合并文件内容并显示
merged_content = merge_files(file1_content, file2_content)
print(merged_content)

python调用命令

python调用命令的标准写法popen

subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)中的shell=True必须

import subprocess

# 示例1: 执行一个简单的命令
command = "echo Hello, World!"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

# 等待子进程执行完毕
return_code = process.wait()

# 获取标准输出和标准错误
stdout, stderr = process.communicate()

print(f"返回码: {return_code}")
print(f"标准输出: {stdout}")
print(f"标准错误: {stderr}")

# 示例2: 执行带参数的命令
command_with_args = ["echo", "Hello, World!"]
process_with_args = subprocess.Popen(command_with_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

# 等待子进程执行完毕
return_code_with_args = process_with_args.wait()

# 获取标准输出和标准错误
stdout_with_args, stderr_with_args = process_with_args.communicate()

print(f"返回码(带参数): {return_code_with_args}")
print(f"标准输出(带参数): {stdout_with_args}")
print(f"标准错误(带参数): {stderr_with_args}")

python调用process的实时输出

import subprocess
def run_shell(shell):
    cmd = subprocess.Popen(shell, stdin=subprocess.PIPE, stderr=subprocess.PIPE,
                           stdout=subprocess.PIPE, universal_newlines=True, shell=True, bufsize=1)
    # 实时输出
    while True:
        line = cmd.stdout.readline()
        print(line, end='')
        if subprocess.Popen.poll(cmd) == 0:  # 判断子进程是否结束
            break
    return cmd.returncode
if __name__ == '__main__':
    print(run_shell("ping www.baidu.com"))

clog2和系统函数

https://blog.csdn.net/wuzhikaidetb/article/details/121853295
\(clog2是Verilog--2005标准新增的一个系统函数,功能就是对输入整数实现以2为底取对数,其结果向上取整(如5.5取6)。 \)clog2系统函数在Vivado实现的是以e为底取对数,而不是2。

java添加classpath

类似:
/usr/shared:/usr/local/bin:/home/liaoxuefeng/bin
https://www.liaoxuefeng.com/wiki/1252599548343744/1260466914339296
https://en.wikipedia.org/wiki/Java_class_file#General_layout

${1+$@}的用法

\({1+"\)@"}语法首先测试是否设置了\(1,也就是说,是否存在参数。 如果是,那么这个表达式将被替换为整个“\)@”参数列表。
如果不是,那么它将坍缩成空而不是空参数。
其实就是一个普通的字符串替换语法,没有什么神奇的地方。用处其实也不多。之前是为了检查空参数,防止循环中出现打印空参数,但是现在都不需要这种了。

uvm1.1和uvm1.2的starting_phase

uvm1.2应该也有default sequence的方法启动sequence,但是uvm1.2通过get_starting_phase的方式取得。可以从vip的sequence代码中发现这样。
image

add_reg和configuration的属性控制

共同控制。
image

标签:java,merge,args,odt,subprocess,content,命令,UVM,txt
From: https://www.cnblogs.com/bai2022/p/18067518

相关文章

  • Linux nohup命令详解
    Linuxnohup命令详解我们自己笔记本或台式机的显卡往往不能支持我们进行深度学习实验或大模型训练,因此我们往往使用SSH连接服务器然后去运行代码。有的时候我们跑的程序需要跑几个小时甚至几天,这样我们就需要一直开着电脑挂着SSH;偶尔也会遇上网络断开,程序半途中止的情况。所以,......
  • Java线上诊断神器Arthas:常用命令详解!
    有关Arthas基本介绍、安装部署、arthasidea插件在上篇文章已经介绍过,这里就不在重述。文章地址:Java诊断工具Arthas:开篇之watch实战上篇重点讲了watch命令。这篇把剩余一些重要命令讲解演示下。一、trace命令作用:展示方法内部调用路径,并输出方法路径上的每个节点上耗时......
  • JAVA常用类--System类
    System类System是一个在Java开发过程中最常见的一种系统类主要特点:可以直接执行一些系统命令例如:“System.out.println()"就是System类的一种功能本次观察以下几个方法的使用:方法名类型描述publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectd......
  • Java2024-Day01回顾
    publicclassInfo{   publicstaticvoidmain(String[]args){System.out.println("这里是Java2024-Day01")}}1.基本数据类型介绍整数:byte-short-int(默认)-long浮点型:float-double(默认)  后面跟F或f字符型:char:①chara ='XXXX';②char......
  • JAVA常用类--AutoCloseable接口
    AutoCloseable接口自动关闭,释放资源机制在实际的项目开发过程中,一般都有可能连接到一些资源,比如:文件资源、网络资源、数据库资源,在实际项目之中进行资源访问的社会一般有如下几个操作步骤:不使用AutoCLoseable:手动定义关闭函数按照正常的结构设计来讲,当前的程序已经可以满足......
  • JAVA常用类--Cleaner类
    Cleaner类注意:在JDK1.9以上版本可使用在Java程序中提供有GC的垃圾回收机制,如果发现堆内存不足时一定要进行垃圾回收以释放内存空间但如果某些对象在回收前需要做一些处理,可以通过覆写Object类中的finalize()方法来实现这种回收前的处理finalize()方法的定义:@Deprecated(sin......
  • JAVA常用类--Runtime类
    Runtime类Runtime类描述的是一种运行时,在Java程序执行过程中,所有的java程序都一定要运行在JVM(虚拟机)的进程中有了JVM进程,就需要一种类型可以描述当前进程的相关环境以及与之相关的处理操作,即Java设计出了Runtime类每个JVM的进程中都会自动包含有一个Runtime类的实例化对象,打......
  • 贴现率计算程序(java)
    折现率公式: CF0:成本CFi:第i期收入金额r:折现率java代码:importjava.util.ArrayList;importjava.util.Scanner;publicclassTest{publicstaticdoublecalculateNPV(doubleinitialInvestment,ArrayList<Double>cashFlows,doublediscountRate){......
  • Java HashMap 和 HashSet 的高效使用技巧
    JavaHashMapHashMap是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap的优势在于它可以使用任何类型作为键,并且查找速度很快。创建HashMap//导入HashMap类importjava.util.HashMap;publicclassMain{publicstaticvoidmain(String[]a......
  • java环境搭建
    1.计算机硬件冯诺依曼体系输入设备,输出设备,计算器,控制器(这两个就是cpu),存储器(包含内存和外存,外存就是硬盘啥的)2.计算机软件系统软件:doswindows,linux,mac,应用软件:wps3.打开cmd方式点击windosws功能键,然后左键点击windows系统,然后左键点击命令提示符。(如果要以管理员身份......