#ifndef _IrodH_
#define _IrodH_
#include "cb_base.h"
#include "cb_shorthand.h"
#define DESIGN_NAME "irod"
#define OUTPUT_BASE OUTPUT_PATH DIR_SEP DESIGN_NAME DIR_SEP DESIGN_NAME
#include "irod_prop.h"
#include "rod_clones.h"
#include "decoupling.h"
const int DPU_HalfCount = 6;
#include "backplane.h"
#include "clock_generation.h"
#include "data_exchange.h"
#include "dpu_control.h"
#include "front_panel.h"
#include "half_rod.h"
#include "host.h"
#include "interconnect.h"
#include "jtag.h"
#include "power.h"
#include "vme_interface.h"
class CM_Root : public TRootModule {
public:
CM_Backplane Backplane;
CM_ClockGeneration ClockGeneration;
CM_DataExchange DataExchange;
CM_DPU_Control DPU_Control;
CM_FrontPanel FrontPanel;
CM_HalfROD Half_A;
CM_HalfROD Half_B;
CM_Host Host;
CM_Interconnect Interconnect;
CM_JTAG JTAG;
CM_Power Power;
CM_VME_Interface VME_Interface;
virtual void Register() {
reg( Backplane ); Backplane.SetReferenceBase( "BK" );
reg( ClockGeneration ); ClockGeneration.SetReferenceBase( "CG" );
reg( DataExchange ); DataExchange.SetReferenceBase( "DX" );
reg( DPU_Control ); DPU_Control.SetReferenceBase( "DC" );
reg( FrontPanel ); FrontPanel.SetReferenceBase( "FP" );
reg( Half_A ); Half_A.SetReferenceBase( "A" );
reg( Half_B ); Half_B.SetReferenceBase( "B" );
reg( Host ); Host.SetReferenceBase( "HO" );
reg( Interconnect ); Interconnect.SetReferenceBase( "IC" );
reg( JTAG ); JTAG.SetReferenceBase( "JT" );
reg( Power ); Power.SetReferenceBase( "PW" );
reg( VME_Interface ); VME_Interface.SetReferenceBase( "VM" );
}
virtual void Connect() {
"BA" << Host.BA;
"BDF" << Host.BDF;
"BDG" << Host.BDG;
"BDH" << Host.BDH;
"BPWR_" << Backplane.Power << Power.BK;
"BK_" << Backplane.CG << ClockGeneration.BK;
"" << Backplane.DX << DataExchange.BK;
"" << Backplane.HO << Host.BK;
"" << Backplane.IC << Interconnect.BK;
"VME_" << Backplane.VMEbus << VME_Interface.VMEbus;
"DX_" << ClockGeneration.DX << DataExchange.CG;
"DC_" << ClockGeneration.DC << DPU_Control.CG;
"A_" << ClockGeneration.A << Half_A.CG;
"B_" << ClockGeneration.B << Half_B.CG;
"FP_" << ClockGeneration.FP << FrontPanel.CG;
"HO_" << ClockGeneration.HO << Host.CG;
"IC_" << ClockGeneration.IC << Interconnect.CG;
"VME_" << ClockGeneration.VME << VME_Interface.CG;
"" << ClockGeneration.PWR << Power.CG;
"A_" << DataExchange.A << Half_A.DX;
"B_" << DataExchange.B << Half_B.DX;
"HDX_" << DataExchange.H << Host.DX;
"A_" << DPU_Control.A << Half_A.DC;
"B_" << DPU_Control.B << Half_B.DC;
"" << DPU_Control.HO << Host.DC;
"FP_" << FrontPanel.IC << Interconnect.FP;
"FP_" << FrontPanel.VME << VME_Interface.FP;
"A_" << Interconnect.A << Half_A.IC;
"B_" << Interconnect.B << Half_B.IC;
"HIC_" << Interconnect.HO << Host.IC;
"" << Host.VME << VME_Interface.HO;
"PC_" << Power.VME << VME_Interface.PWR;
"MC_" << Power.MeasCtrl << Host.MeasCtrl;
"EMU0" << JTAG.HO.HPU_DSP.EMU0;
"EMU1" << JTAG.HO.HPU_DSP.EMU1;
"TRST_N" << JTAG.HO.HPU_DSP.TRST_N;
"FP_" << JTAG.FP << FrontPanel.JT;
JTAG.BK << Backplane.JT;
JTAG.CG << ClockGeneration.JT;
JTAG.DC << DPU_Control.JT;
JTAG.DX << DataExchange.JT;
JTAG.A << Half_A.JT;
JTAG.B << Half_B.JT;
JTAG.HO << Host.JT;
JTAG.IC << Interconnect.JT;
JTAG.VME << VME_Interface.JT;
"VB" << Power.VB;
wireall( "VB", "MB_VB" );
wireall( "VB", "DSP_VB" );
wireall( "MB_VCC5" );
wireall( "MB_VCC" );
wireall( "VPC" );
wireall( "DSP_VCC" );
wireall( "DSP_VA" );
wireall( "GND" );
}
};
#endif