DataStructs.h
#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的更多相关文章
- Buffer.h
#ifndef __NOXIMBUFFER_H__ #define __NOXIMBUFFER_H__ #include <cassert> #include <queue> ...
- ProcessingElement.h
processing element模块 #ifndef __NOXIMPROCESSINGELEMENT_H__ #define __NOXIMPROCESSINGELEMENT_H__ #incl ...
- Noxim Overview
PE+Router= Tile Node Architectural Elements: Buffer.h, Router.h, LocalRoutingTable.h, Tile.h, NoC.h, ...
- APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...
- 关于apue.3e中apue.h的使用
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
- YYModel 源码解读(一)之YYModel.h
#if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...
- error RC1015: cannot open include file 'afxres.h' 解决办法
在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...
- afxcomctl32.h与afxcomctl32.inl报错
afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...
随机推荐
- 导入大数据量sql时候超时的问题
D:\Visual-NMP-x64\Bin\MySQL\bin这个是你mysql的路径 mysqldump.exe -h服务器信息 -umysql的用户名 -pmysql的密码 数据库名 > 要 ...
- Idea实用快捷键
快速找到最近使用的文件的设置 ctrl+E general 里设置 自动补全末尾的字符 Ctrl+Shift+Enter 选择当前光标位置单词 ...
- configure,make,make install作用和关系的一些理解
一. 整体关系 为求直观,画了一张大致关系图: 我个人的理解是这样的,将编译安装比作做菜的话, △ configure的作用,以厨师的构想以参数的形式作为输入,生成并输出菜谱,菜谱包含两个部分---- ...
- Android Studio上传代码到Coding.net
1.官方帮助文档:https://coding.net/help/doc/git/import-from-local.html 2.简单点: https://git.coding.net/javaka ...
- 有关于并发中的死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)
最近在看<实战Java高并发程序设计>,发现了之前没有接触过的几个名词. 死锁:之前在接触多线程的时候,接触过死锁的情况.死锁是线程中最糟糕的情况,如下面的图中的四辆车子一样,如果没有一辆 ...
- vue之表单输入绑定
- Tomcat 配置文件
Tomcat 的配置文件并不多,由4个 xml 文件组成,分别是 context.xml.web.xml.server.xml.tomcat-users.xml 这几个文件.每个文件都有自己的功能与配 ...
- Excel vba:批量生成超链接,添加边框,移动sheet等
Excel vba 操作 批量生成sheet目录并添加超链接 Sub Add_Sheets_Link() 'Worksheets(5)为清单目录页 '在sheet页上生成sheet页名字并超链接 To ...
- View控件跟随鼠标移动
public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction() == MotionEve ...
- Python基础-python流程控制之循环结构(五)
循环结构 循环结构可以减少源程序重复书写的代码量,用来描述重复执行某段算法的问题. Python中循环结构分为两类,分别是 while 和 for .. in. 一.while循环 格式1: whil ...