#ifndef _DATASTRUCS_H__
#define _DATASTRUCS_H__ #include <systemc.h>
#include "GlobalParams.h" ................省略内容 #endif
 // Coord -- XY coordinates type of the Tile inside the Mesh
class Coord {
public:
int x; // X coordinate
int y; // Y coordinate
//操作符重载,调用方式if(c1 == c2)
//括号中的const表示参数coord对象不会被修改,最后的const表明调用函数对象不会被修改
inline bool operator ==(const Coord & coord) const {
return (coord.x == x && coord.y == y);
}};

class Coord

 // FlitType -- Flit type enumeration
enum FlitType {
FLIT_TYPE_HEAD, FLIT_TYPE_BODY, FLIT_TYPE_TAIL
};

payload可以是flit,也可以是credit

 // Payload -- Payload definition
struct Payload {
//sc_uint为无符号整数类型
sc_uint<> data; // Bus for the data to be exchanged inline bool operator ==(const Payload & payload) const {
return (payload.data == data);
}};

struct Payload

 // Packet -- Packet definition
struct Packet {
int src_id;
int dst_id;
double timestamp; // SC timestamp at packet generation
int size;
int flit_left; // Number of remaining flits inside the packet
bool use_low_voltage_path; // Constructors
Packet() { } Packet(const int s, const int d, const double ts, const int sz) {
make(s, d, ts, sz);
}
//初始化packet
void make(const int s, const int d, const double ts, const int sz) {
src_id = s;
dst_id = d;
timestamp = ts;
size = sz;
flit_left = sz;
use_low_voltage_path = false;
}
};

struct Packet

 // Flit -- Flit definition
struct Flit {
int src_id;
int dst_id;
FlitType flit_type; // The flit type (FLIT_TYPE_HEAD, FLIT_TYPE_BODY, FLIT_TYPE_TAIL)
int sequence_no; // The sequence number of the flit inside the packet
int sequence_length;
Payload payload; // Optional payload
double timestamp; // Unix timestamp at packet generation
int hop_no; // Current number of hops from source to destination
bool use_low_voltage_path;
//操作符重载
inline bool operator ==(const Flit & flit) const {
return (flit.src_id == src_id && flit.dst_id == dst_id
&& flit.flit_type == flit_type
&& flit.sequence_no == sequence_no
&& flit.sequence_length == sequence_length
&& flit.payload == payload && flit.timestamp == timestamp
&& flit.hop_no == hop_no
&& flit.use_low_voltage_path == use_low_voltage_path);
}};

struct Flit

 // RouteData -- data required to perform routing
struct RouteData {
int current_id;
int src_id;
int dst_id;
int dir_in; // direction from which the packet comes from
};

struct RouteData

 struct ChannelStatus {
int free_slots; // occupied buffer slots
bool available; // inline bool operator ==(const ChannelStatus & bs) const {
return (free_slots == bs.free_slots && available == bs.available);
};
};

struct ChannelStatus

 // NoP_data -- NoP Data definition  Neighbor-on-Path
struct NoP_data {
int sender_id;
ChannelStatus channel_status_neighbor[DIRECTIONS]; inline bool operator ==(const NoP_data & nop_data) const {
return (sender_id == nop_data.sender_id &&
nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]);
};
};

struct NoP_data

 typedef struct
{
string label;
double value;
} PowerBreakdownEntry;
 enum
{
BUFFER_PUSH_PWR_D,
BUFFER_POP_PWR_D,
BUFFER_FRONT_PWR_D,
BUFFER_TO_TILE_PUSH_PWR_D,
BUFFER_TO_TILE_POP_PWR_D,
BUFFER_TO_TILE_FRONT_PWR_D,
BUFFER_FROM_TILE_PUSH_PWR_D,
BUFFER_FROM_TILE_POP_PWR_D,
BUFFER_FROM_TILE_FRONT_PWR_D,
ANTENNA_BUFFER_PUSH_PWR_D,
ANTENNA_BUFFER_POP_PWR_D,
ANTENNA_BUFFER_FRONT_PWR_D,
ROUTING_PWR_D,
SELECTION_PWR_D,
CROSSBAR_PWR_D,
LINK_R2R_PWR_D,
LINK_R2H_PWR_D,
NI_PWR_D,
WIRELESS_TX,
WIRELESS_DYNAMIC_RX_PWR,
WIRELESS_SNOOPING,
NO_BREAKDOWN_ENTRIES_D
}; enum
{
TRANSCEIVER_RX_PWR_BIASING,
TRANSCEIVER_TX_PWR_BIASING,
BUFFER_ROUTER_PWR_S,
BUFFER_TO_TILE_PWR_S,
BUFFER_FROM_TILE_PWR_S,
ANTENNA_BUFFER_PWR_S,
LINK_R2H_PWR_S,
ROUTING_PWR_S,
SELECTION_PWR_S,
CROSSBAR_PWR_S,
NI_PWR_S,
TRANSCEIVER_RX_PWR_S,
TRANSCEIVER_TX_PWR_S,
NO_BREAKDOWN_ENTRIES_S
};

enum

 typedef struct
{
int size;
PowerBreakdownEntry breakdown[NO_BREAKDOWN_ENTRIES_D+NO_BREAKDOWN_ENTRIES_S];
} PowerBreakdown;

DataStructs.h的更多相关文章

  1. Buffer.h

    #ifndef __NOXIMBUFFER_H__ #define __NOXIMBUFFER_H__ #include <cassert> #include <queue> ...

  2. ProcessingElement.h

    processing element模块 #ifndef __NOXIMPROCESSINGELEMENT_H__ #define __NOXIMPROCESSINGELEMENT_H__ #incl ...

  3. Noxim Overview

    PE+Router= Tile Node Architectural Elements: Buffer.h, Router.h, LocalRoutingTable.h, Tile.h, NoC.h, ...

  4. APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试

    此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...

  5. 关于apue.3e中apue.h的使用

    关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...

  6. YYModel 源码解读(二)之NSObject+YYModel.h (1)

    本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...

  7. YYModel 源码解读(一)之YYModel.h

    #if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...

  8. error RC1015: cannot open include file 'afxres.h' 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  9. afxcomctl32.h与afxcomctl32.inl报错

    afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...

随机推荐

  1. 使用python备份文件

    想写个定时备份文件的功能,这个功能需要实现:1.搜索指定的目录里是否存在当天的文件2.如果存在压缩并加密文件3.通过ftp上传到备份服务器4.在备份服务器上定时将文件拷贝到移动硬盘并定时清理文件 本来 ...

  2. python1.返回一个字符串中出现次数第二多的单词 2.字符串中可能有英文单词、标点、空格 3.字符串中的英文字符全部是小写

    import re from collections import Counter def second_count_word(s): # # 利用正则按标点和空格切割,有其他标点可以添加到[]内 # ...

  3. HTML的基础样式之CSS

    一.初始CSS 1.1.介绍CSS 1.CSS定义如何显示HTML元素. 2.当浏览器读到一个样式表,他就会按照这个样式表来对文档进行格式化(渲染). 1.2.CSS语法 每个CSS样式由两个组成部分 ...

  4. python 推导式

    推导式又称解析式,是Python的一种独有特性.目的是可以从一个数据序列推导出另一个数据序列,适用于python 的list ,dict 和集合 list中的推导式: _list=[i for i i ...

  5. hbuilder 打包 vueAPP

    1:设置状态栏颜色 在manifest.json 找到 plus 下添加 "statusbar": { "immersed": true/*沉浸式状态栏*/ 设 ...

  6. 安装MCScanX

    1.首先安装依赖软件 the Java SE Development Kit (JDK) and “libpng” 参考路径:https://mp.weixin.qq.com/s?src=11& ...

  7. pandas中的时间序列基础

    重要的数据形式时间序列 datetime以毫秒形式存储日期和时间 now = datetime.now() now datetime.datetime(2018, 12, 18, 14, 18, 27 ...

  8. STM32的命名规范

    STM32F407VET6 STM32F407代表的是芯片的型号后面的字符表示芯片的信息 V这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表176 ...

  9. P1579哥德巴赫猜想

    写来自己学习用~ 题目内容: 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和1 ...

  10. 对象属性拷贝工具类大全==>Bean的属性拷贝从此不用愁

    大家在做java开发时,肯定会遇到api层参数对象传递给服务层,或者把service层的对象传递给dao层,他们之间又不是同一个类型对象,但字段又是一样,如果还是用普通的get.set方式来处理话,比 ...