For studying thermal properties of FPGAs (e.g., for building thermal models or for investigating fault-tolerance methods for mitigating temperature induced soft-errors) it is important to have hardware cores that can generate large amounts of heat. In our publication "M. Happe, H. Hangmann, A. Agne, and C. Plessl. Eight ways to put your FPGA on fire – a systematic study of heat generators. In Proc. Int. Conf. on ReConFigurable Computing and FPGAs (ReConFig), pages 1–8. IEEE Computer Society, Dec. 2012." we have presented a study that evaluated several methods for intentionally generating heat on FPGAs. This projects make the best performing heat generator from this study (oscillators implemented in LUTs) available as open-source hardware, that is, a PCore that can be embedded in Xilinx EDK designs. The amount of heat can be regulated in 32 levels.
Open your XPS project and rescan the user repositories.
Add the PCores by right-clicking and adding them.
Prevent trimming of the heat core by opening the Implementation Options File and adding
-u to the mapper options.
int get_active_heater( unsigned int* heat_core )- returns the number of active heat blocks (1 - 32)
void set_active_heater( unsigned int* heat_core, int active )- sets the number of active heat blocks (1 - 32)
void enable( unsigned int* heat_core )- enables the HeatCore
void disable( unsigned int* heat_core )- disables the HeatCore
void increase( unsigned int* heat_core)- increases the Heat Core's intensity level
void decrease( unsigned int* heat_core)- decreases the Heat Core's intensity level
int enabled( unsigned int* heat_core )- returns '1' if heater is enabled
unsigned int sysmon_get_mcelsius()- returns the temperature of your FPGA in millicelsius
unsigned int sysmon_get_vcc()- returns the voltage of your FPGA
void wait_for_ms(int duration)- waits for duration ms
INST "heat_core_1" AREA_GROUP = "heat_cores";
INST "heat_core_2" AREA_GROUP = "heat_cores";
AREA_GROUP "heat_cores" RANGE = SLICEX0Y50:SLICE_X61Y111;
The research leading to these results has received funding from the European Union 7th Framework Programme under grant agreement n◦ 257906. For more details please refer to the EPiCS website.
Copyright (c) 2013 Hendrik Hangmann, University of Paderborn
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: