测试中c平台是啥东西

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试中c平台是啥东西相关的知识,希望对你有一定的参考价值。

本文是本系列专题的第九篇,参考高亚军老师的视频教程以及课程的ppt,主要介绍了高效的C测试平台相关内容。

激励来源
直接将变量定义为激励来源并初始化
将数据存储在数组中
从外部文件读取数据作为激励来源
对于存储在数组中和外部文件中的激励源,要进行定义数组进行存储。
使用数组作为激励源

这里定义两个数组作为仿真的测试激励来源。
使用外部文件作为激励源
使用外部文件作为激励源可以更容易存储更多的数据,拓宽了存储数据的范围,可以涵盖几乎所有可能的输入。同时,使用外部文件作为激励源使得仿真更加灵活,不需要对仿真文件进行过多的修改即可完成仿真设计。

C++中,外部文件存储输入激励的流程如下:
首先创建文件存储要仿真的激励数据,然后从文件中读取激励数据,最后将读到的数据存储到数组中。
使用外部文件读取数据的两种方式
使用while循环进行读取数据
使用for循环进行读取数据
使用外部存储的设计示例

在设计中,首先要包含头文件fstream,然后进行定义存储的数组单元。将文件中的数据利用for循环或者while循环进行存储到数组中。对于读取外部文件时,可以直接根据文件的路径寻找文件,也可以把文件添加到工程中在读取时只引用文件名即可。
使用模板函数
模板函数提供了一个参数化的方法,以满足不同的需求,如数据类型,数组大小。使用模板函数非常类似于Verilog HDL中的parameter/ generic,模板函数最好以.h文件的形式编写和存储,在main()函数中,需要添加#include “ReadFileVec.h”
输出监测
用于检测输出结果的模块这里称为Scoreboard。Scoreboard用于比较自己的设计和参考设计的结果,在得到错误信息的时候给出相关的指示信息。
比较输出结果的两种办法
通常,可以使用两种办法进行比较测试的输出数据的结果。

使用if语句进行比较结果
使用system函数进行比较结果
有时候,DUT的结果并不绝对等于黄金参考数据。通过定义绝对误差,我们可以使用另一种类似的方法if (abs(a-b) <绝对错误)。
如果我们使用系统函数进行比较,我们必须首先将DUT的输出写入一个外部文件,同时参考数据存储在一个外部文件中这样,系统也可以显示它们之间的区别确保两个文件的格式一致。

将数据写入到外部文件
比较输出结果后,我们可以通过仿真直接进行设置监视数据的相关状态的输出,也可以将结果写入到外部文件中。步骤如下:

包含 < fstream >;
使用模板函数对数据进行复用;
创建 ofstream 对象;
检查是否存在待写入文件;
写入数据到目标文件;
关闭文件。
输出格式控制
left right integer 类型输出
integer类型输出的进制类型

通过示例可以看出两种方法的输出结果在有些情况下不同。
定点数进制类型

通过示例可以看出,对于定点数来说,使用 to string的方式结果正确,在仿真时建议使用该方式。
浮点数类型
对于位数控制
summary

一字粗跟凉鞋
精选推荐
广告

编写一个c程序,测试当前平台的字节序(大端序 \ 小端序)
998阅读·0评论·0点赞
2020年2月3日
HLS在线测试地址
1.0W阅读·0评论·0点赞
2018年12月14日
推荐几个很好的编程在线测试平台 online judge
4123阅读·0评论·0点赞
2017年7月25日
Vivado HLS(High-level Synthesis)笔记三:Test bench
3808阅读·1评论·0点赞
2019年5月10日
HLS 测试流
990阅读·0评论·0点赞
2017年12月14日
HLS开发学习-01-HLS介绍与FPGA简单内部介绍
2976阅读·0评论·0点赞
2020年4月4日
标准物质,标准品,对照品一站式采购

植标化纯
广告
Vivado HLS(High-level Synthesis)笔记一:HLS基本流程
1.3W阅读·2评论·0点赞
2019年5月10日
Vivado HLS学习笔记(3)
110阅读·0评论·0点赞
2022年8月2日
一大波HLS设计资料来了-跟Xilinx SAE 学HLS系列视频讲座-跟我学HLS
100阅读·0评论·0点赞
2021年6月23日
XAPP599-Vivado HLS的浮点设计
1064阅读·0评论·0点赞
2020年8月4日
流媒体协议初探(MPEG2-TS、RTSP、RTP、RTCP、SDP、RTMP、HLS、HDS、HSS、MPEG-DASH)
972阅读·0评论·2点赞
2022年6月26日
HLS(一)Vivado高层次综合概述
299阅读·0评论·0点赞
2022年11月5日
NDK Clang 编译 FFmpeg 4.4.1 + fdk-aac 2.0.2 + x264 20191217
3943阅读·3评论·2点赞
2022年1月23日
高效视频编码 (HEVC) -H.265(结构解析)
2.1W阅读·0评论·0点赞
2022年4月27日
FPGA架构与HLS工具
194阅读·0评论·0点赞
2022年8月8日
跟Xilinx SAE 学HLS系列视频讲座笔记(1)
537阅读·0评论·0点赞
2020年9月30日
跟Xilinx SAE 学HLS系列视频讲座笔记(2)——编写高效的C Test Bench
205阅读·0评论·0点赞
2020年10月3日
FPGA----VHLS补丁及采用LU分解(Chosky分解)求解矩阵的逆
661阅读·2评论·0点赞
2022年5月2日
hls fifo_【FCCM2020】HLS 高手对比 Verilog 高手,到底输哪了?
196阅读·0评论·0点赞
2020年11月22日
去首页
看看更多热门内容
评论3

John Zhuang


牛!希望互相关注,一起进步!
2021.07.12

大家一起学编程(python)


遇到好文章,我都会评论
参考技术A 介绍些电商平台属于c端和互联网c端b端是什么意思的相关介绍。
互联网发展的今天,涌现出多种电商模式。
经常听到有人说我做的C端平台,他做的B端业务,那么这些电商模式具体是怎样的呢?今天九六家小编带大家了解一下常见的电商模式缩写术语。
C端是“Consumer (消费者)”的缩写,可以理解成零售端的意思,货品直接到达消费者手中,例如淘宝,天猫,京东,拼多多属于C端平台。
B端是“Business (商业)”的缩写,可以理解成批发端的意思,是指与企业合作,例如1688属于B端平台。

C面试测试中的“条件”是啥?

【中文标题】C面试测试中的“条件”是啥?【英文标题】:What's the "condition" in C interview test?C面试测试中的“条件”是什么? 【发布时间】:2010-09-07 04:28:43 【问题描述】:

是否可以使用单个condition 打印两次Hello

if  "condition"
  printf ("Hello");
else
  printf("World");

【问题讨论】:

http://www.geekinterview.com/question_details/65997 我的意思是如果我们想在两个块中执行代码,'if'条件下的代码应该是什么?? 这是一个愚蠢的技巧问题。问题可能更像这样:***.com/questions/33199/…,答案就在那里。 答案是:你不想在问这种愚蠢问题的地方工作。 重复?我想不是! “重复”中的大多数答案都没有这里的答案有趣。部分原因是问题完全不同。在这里,我们要执行两个分支,在另一个问题中,要求是创建一个导致特定输出的条件。非常不同的问题有非常不同的答案。一个是测试您对 goto 类结构的了解,另一个是测试您对条件下副作用的认识。 【参考方案1】:
if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");

:-)

【讨论】:

对于 printf:成功时,返回写入的字符总数。【参考方案2】:
"condition" === (printf("Hello"), 0)

真的很蹩脚:

int main() 
    if  (printf("Hello"), 0)
        printf ("Hello");
    else
        printf("World");

我更喜欢使用逗号运算符,因为您不必查找printf 的返回值就可以知道条件的作用。这增加了可读性和可维护性。 :-)

【讨论】:

【参考方案3】:

在我看来,这听起来像是一些面试难题。我希望这接近你想要的。


#include <stdio.h>

int main()

 static int i = 0 ;
 if( i++==0 ? main(): 1)
  printf("Hello,");
 else
  printf("World\n");

 return 0 ;

打印Hello, World

【讨论】:

我认为这应该是公认的答案。它不使用分叉,因此可以保证订单,并且在条件下也不会打印“Hello”。执行实际上进入了两个决策分支...否则,您可以打印条件中的所有内容然后结束程序,我认为这不是一个非常聪明的解决方案!【参考方案4】:

系好安全带:

#include <stdio.h>
#include <setjmp.h>

int main()

    jmp_buf env;

    if (!setjmp(env))
    
        printf("if executed\n");
        longjmp(env, 1);
    
    else
    
        printf("else executed\n");
    

    return 0;

打印:

if executed
else executed

这是你的意思吗?我对此表示怀疑,但至少这是可能的。使用fork 也可以,但是分支会在不同的进程中运行。

【讨论】:

注意:您不能从 setjmp() 宏中移植地分配返回值。 @jonathan - 你是对的,修复了代码。但是,我想知道这些天是否有任何编译器不能正确处理它。许多基于 setjmp 的 C“异常”框架使用将其返回值保存到标志 在实践中,它可能有效;我当然不知道有哪个平台不起作用——但我也没有调查过,因为调试失败会很痛苦(充其量)。分配setjmp() 的返回值是未定义的行为;任何事情都可能发生(包括“它按预期或期望工作”)。【参考方案5】:

如果是在 Unix 上:

if  (fork())
    printf ("Hello");
else
    printf("World");

不保证打印顺序 0f 的课程

【讨论】:

【参考方案6】:
#define CONDITION (0) if (0)  else

或类似的。

如果您在面试中看到这样的问题,请尽快逃跑!提出这种问题的团队肯定是不健康的。

编辑 - 我忘了澄清 - 这依赖于“else”与最接近的开放“if”匹配,并且它被写为“if CONDITION”而不是 if (CONDITION) - 括号会使难题无法解决.

【讨论】:

【参考方案7】:
if ( printf("Hello")==0)

见 [http://www.coders2020.com/what-does-printf-return]

(matt 纠正了我的 =,谢谢,C 很远)

【讨论】:

【参考方案8】:

if 语句执行一个或另一个受控语句(在您的示例中都是 printf)。无论您对condition 使用什么,sn-p 都会打印“Hello”或“World”,但绝不会同时打印两者。

编辑:好的,所以这是一个技巧问题,您可以在条件中添加任何您喜欢的内容(包括调用一个完整的其他函数来执行您想要的任何操作)。但这并不有趣。我不敢相信我因为给出正确答案而被降级了。

【讨论】:

我也不敢相信,在我看来做这件事的人都是小气/跛脚。所以这里有一些代表回复:)不应该因为不够“聪明”看到解决方案并发布您真正认为正确的内容而受到负面惩罚。【参考方案9】:

评论“其他”;)

if(foo)

    bar();

//else

    baz();

【讨论】:

很好的答案!善用评论。【参考方案10】:

在不知道printf的返回值的情况下:

if (printf("Hello") && 0)
    printf("Hello");
else
    printf("World");

【讨论】:

【参考方案11】:

基本的答案是,在事件的普通过程中,您既不想在一次通过代码中同时执行“if”块和“else”块中的语句(如果你这样做,为什么要打扰条件) 你也不能在不跳过怪诞的圈子的情况下执行这两组语句。

一些怪诞的箍 - 邪恶的代码!

    if (condition == true)
    
         ...stuff...
         goto Else;
    
    else
    
Else:
        ...more stuff...
    

当然,这是对(任何)语言的简单滥用,因为它相当于:

    if (condition == true)
    
         ...stuff...
    
    ...more stuff...

但是,它可能会实现问题的要求。如果无论条件是真还是假都必须执行这两个块,那么事情会变得有点棘手。

    done_then = false;
    if (condition == true)
    
Then:
         ...stuff...
         done_then = true;
         goto Else;
    
    else
    
Else:
        ...more stuff...
        if (!done_then) goto Then;
    

【讨论】:

一个“更邪恶”的代码版本颠倒了标签(所以“then”子句有一个标签“Else”,反之亦然)。也许邪恶的“终极”坚持代码块以相同的顺序执行,而不管条件的结果如何(当然可以这样做)。但是这些要求变得如此牵强,以至于荒谬——如果他们还没有的话! 据我认为他要求的条件,而不是声明中的“goto”,在我的意义上打破了这条规则【参考方案12】:
int main()

    runIfElse(true);
    runIfElse(false);

    return 0;


void runIfElse(bool p)

    if(p)
    
     // do if
    
    else
    
     // do else
    

【讨论】:

不清楚这个问题的“运行”是什么意思,是吗? +1 以不同的方式扭曲问题。【参考方案13】:
if  (true) printf ("Hello"); if (false)
    printf ("Hello");
else
    printf("World");

【讨论】:

【参考方案14】:

不喜欢exit

if(printf("HelloWorld"), exit(0), "ByeBye") 
    printf ("Hello");
else
    printf ("World");

【讨论】:

【参考方案15】:

所以...您想执行 if 块内的代码...和 ​​else 块内的代码...相同的 if/else 语句?那么...你应该去掉 else 并在 if 中粘贴 taht 代码。

if something
  do_this
  do_that
end

else 语句旨在仅在 if 语句未执行时执行,反之亦然,这就是重点。这是一个奇怪的问题...

【讨论】:

【参考方案16】:

这可以工作:

if (printf("Hello") - strlen("Hello"))
    printf("Hello")
else
    printf("World")

这个sn-p强调printf的返回值:打印的字符数。

【讨论】:

【参考方案17】:

只需将代码放在 if..else 块之前或之后。

或者,如果您有一个“if,else if,else”块,您想在某些(但不是全部)分支中执行代码,只需将它放在一个单独的函数中并在每个块中调用该函数。

【讨论】:

【参考方案18】:

解决方案 1:

int main(int argc, char* argv[])
   
    if( argc == 2 || main( 2, NULL ) )
    
        printf("Hello ");   
    
    else
    
        printf("World\n");
    
    return 0;

解决方案 2(仅适用于 Unix 和 Linux):

int main(int argc, char* argv[])
   
    if( !fork() )
    
        printf("Hello ");   
    
    else
    
        printf("World\n");
    
    return 0;

【讨论】:

【参考方案19】:
 #include<stdio.h>
  int main()

 if(! printf("Hello"))
     printf ("Hello");
else
    printf ("World");
 return 0;

因为 Printf 返回它已成功打印的字符数。

【讨论】:

【参考方案20】:
if(printf("Hello") == 1)
    printf("Hello")
else
    printf("World")

【讨论】:

【参考方案21】:
if (printf("Hello") < 1)
    printf("Hello");
else
    printf("World");

【讨论】:

【参考方案22】:

格雷格写道:

无论您使用什么条件,sn-p 都会打印“Hello”或“World”,但不会同时打印。

嗯,这不是真的,但为什么你会想要打印两者,我找不到用例。它违背了 if 语句的意义。可能的“真正”解决方案是根本不使用 if。愚蠢的面试问题... :)

【讨论】:

【参考方案23】:

非常有趣的家伙,感谢您的回答。我从来没有想过将 print 语句放在 if 条件中。

这是 Java 的等价物:

    if ( System.out.printf("Hello").equals("") )
        System.out.printf("Hello");
    else
        System.out.printf("World");

【讨论】:

【参考方案24】:

那么不要使用 if else 块。

编辑评论。

这可能意味着代码在两个块中,或者如果需要在两种情况下运行,则在块之前/之后。

【讨论】:

如果我们想在两个块中执行代码,'if'条件下的代码应该是什么??【参考方案25】:

使用 goto,这是我们当今使用最多的关键字之一

【讨论】:

正如 Dijkstra 和其他人所提到的,很可能是最危险的一种。 goto 并不像数组取消引用运算符那么危险。【参考方案26】:

用空的 else 语句欺骗:

if (condition)
    // do if stuff
else;
    // do else stuff

如果你不喜欢其他的事实;实际上是一个空的 else 语句试试这个:

for (int ii=0; ii<2; ii++)

    if (condition && !ii)
        // do if stuff
    else
    
        // do else stuff
        break;
    

【讨论】:

【参考方案27】:

不使用 printf 语句的两种可能的解决方案:-

首先:-

#include <stdio.h>

int
main(void)

  if (!stdin || (stdin = 0, main()))
    printf("hello");
  else
    printf("world");
  return 0;

第二

#include<stdio.h>
void main()

if (1
#define else if (1) 
)
 
  printf("hello"); 
 
else
  
    printf("world"); 


参考 :- Link1 , Link2

【讨论】:

【参考方案28】:
if (printf("hello") & 0)

printf("hello");

else

printf("world");

不用关心printf的返回值。

【讨论】:

【参考方案29】:

滥用预处理 - 至少进行清理。


#define else 
if(1)

   printf("hello");

else

   printf("world");

#undef else

【讨论】:

【参考方案30】:

这个问题的条件是:

 if(printf("hello")? 0 : 1)    

【讨论】:

if(printf("hello")? 0 : 1) else printf("world");

以上是关于测试中c平台是啥东西的主要内容,如果未能解决你的问题,请参考以下文章

C语言中eps指的是啥东西?

Linux 是啥东西?

Java是啥东西?

Matlab中最接近#define的东西是啥?

MinGW是啥东西?它和QT是啥关系?怎么用MinGW

最近一直听到别人说unity3D,这个东西具体是啥呢?大家知道吗