SCHEMA Framework_Config; USE FROM Basic_Types; (*"Priority_Range" Definition of priority range. We choose the most current value : (1) 256 priority levels (from 0 to 255); (2) Zero is the lowest priority level *) TYPE Priority_Range = INTEGER; END_TYPE; (*"Debug_Level" Activate Cheddar's debug mode. if trueThis debug mode allows the user to have some extra display *) TYPE Debug_Level = ENUMERATION OF ( No_Debug, Minimal, Verbose, Very_Verbose ); END_TYPE; (*"Languages" Define the language used in the graphical editor of Cheddar. Default language is "English" *) TYPE Languages = ENUMERATION OF ( Francais, English ); END_TYPE; (*"Cheddar_Debug" Maximum processors, tasks, messages, buffers and resources which can be defined in a cheddar XML file Increasing these constants implies increasing cheddar memory footprint *) CONSTANT Cheddar_Debug : Debug_Level := Very_Verbose; Max_Processors : Natural := 30; Max_Task_groups : Natural := 30; Max_Tasks : Natural := 200; Max_Messages : Natural := 5; Max_Buffers : Natural := 30; Max_Resources : Natural := 30; Max_Networks : Natural := 5; Max_Event_Analyzers : Natural := 10; Max_Address_Spaces : Natural := 30; Max_Sections : Natural := 50; Max_Transitions : Natural := 200; Max_Caches : Natural := 10; Max_Core_Units : Natural := 30; Max_Positions : Natural := 30; Max_Deployments : Natural := 20; (*"Max_Schedulers" MUST BE EQUAL TO 1 + natural'max( natural'max(Max_Deployments,Max_Core_Units), Max_Address_Spaces); *) Max_Schedulers : Natural := 100; Max_Cache_Size : Natural := 256; Max_CFG_Nodes : Natural := 100; Max_CFG_Edges : Natural := 100; Max_CFGs : Natural := 200; Max_Objects : Natural := Max_Processors + Max_Tasks + Max_Messages + Max_Buffers + Max_Resources + Max_Networks + Max_Event_Analyzers + Max_Address_Spaces + Max_Sections + Max_Address_Spaces + Max_Transitions + Max_Caches + Max_Core_Units; (*"Max_Scheduling_Period" Define the largest scheduling interval time that the simulator can compute. Increasing this constant implies increasing cheddar CPU usage *) Max_Scheduling_Period : Natural := 200000; (* Low_Priority : constant Priority_Range := Priority_Range'First; High_Priority : constant Priority_Range := Priority_Range'Last; *) Low_Priority : Priority_Range := 0; High_Priority : Priority_Range := 255; (*"Max_Big_Number_Size" Maximum accurrancy of big numbers packages. - Increase it if you need to run large XML Chedar project file - Increasing this constant implies increasing cheddar memory footprint - Increasing this constant implies increasing cheddar CPU usage *) Max_Big_Number_Size : Natural := 200; Current_Language : Languages := English; (*"Max_Tasks_For_A_Resource" Maximum number of tasks that can use a shared resource. Increasing this constant implies increasing cheddar memory footprint *) Max_Tasks_For_A_Resource : Natural := 10; (*"Max_Tasks_For_A_Buffer" Maximum number of tasks that can use a shared buffer. Increasing this constant implies increasing cheddar memory footprint *) Max_Tasks_For_A_Buffer : Natural := 10; (*"Max_Variables" Define maximum of variables that can be defined in parametric scheduler Increasing this constant implies increasing cheddar memory footprint *) Max_Variables : Natural := 400; (*"Max_Statements" Maximum number of statements in a parametric scheduler. Increasing this constant implies increasing cheddar memory footprint *) Max_Statements : Natural := 400; (*"Max_Block_Level" The langage used to defined a parametric scheduler is block oriented : the constant below given the maximum depth level of block. Increasing this constant implies increasing cheddar memory footprint *) Max_Block_Level : Natural := 100; (*"Max_Tasks_Dependencies" Maximum number of dependencies of a XML Cheddar project file. Dependencies can be a message/buffer used by two tasks or a precedencies constraint. Increasing this constant implies increasing cheddar memory footprint *) Max_Tasks_Dependencies : Natural := 150; (*"Max_User_Defined_Task_Parameters" Define maximum of user's defined task parameter *) Max_User_Defined_Task_Parameters : Natural := 12; (*"Max_Framework_Parameters" Maximum of parameters during a framework call *) Max_Framework_Parameters : Natural := 40; (*"Max_Offsets" Define offset constants : a task can contain at most 3 offsets *) Max_Offsets : Natural := 5; (*"Max_Density_Size" This constant define the size of "xi" of a discrete density probability *) Max_Density_Size : Natural := 200; (*"Max_Requests" Maximum size of the framework request table. Increasing this constant implies increasing cheddar memory footprint *) Max_Requests : Natural := 40; (*"Max_String_Size" Maximum size of a fixed string *) Max_String_Size : Natural := 200; (*"Max_Simulation" This constant is used by the parametric simulation engine. It defines size of tables which store simulation data for all elements of Cheddar project (except time units) *) Max_Simulation : Natural := 0; (*"Sum_Simulation" Sum of all objects which can be stored in a XML project *) Sum_Simulation : Natural := Max_Processors + Max_Tasks + Max_Messages + Max_Resources + Max_Networks; (*Constant of DFG_Nodes*) NB_MAX_BLOCKS_CFG : Natural := 30; MAX_LENGTH_NAME_VAR : Natural := 50; MAX_LENGTH_NAME_BLOCK : Natural := 50; MAX_NB_USED_VAR_STATEMENT : Natural := 10; MAX_NB_STATEMENTS_BLOCK : Natural := 10; MAX_NB_NEXT_NODES_STATEMENT : Natural := 10; MAX_NB_PREVIOUS_NODES_STATEMENT : Natural := 10; MAX_DEF : Natural := (MAX_NB_STATEMENTS_BLOCK * NB_MAX_BLOCKS_CFG); MAX_USE : Natural := (MAX_NB_USED_VAR_STATEMENT * MAX_NB_STATEMENTS_BLOCK); MAX_DEF_USE : Natural := ((MAX_USE * MAX_DEF) * NB_MAX_BLOCKS_CFG); (*Constant of CRPD_Tree Analysis*) Max_CRPD_Records : Natural := 100; Max_Task_Release_Records : Natural := 100; Max_Relative_Priority_Records : Natural := 100; Max_Task_Index_Records : Natural := 100; END_CONSTANT; END_SCHEMA; SCHEMA Editor_Config; USE FROM Basic_Types; USE FROM Framework_Config; USE FROM Time_Unit_Events; TYPE Data_From_Simulation = ENUMERATION OF ( Worst_Case, Best_Case, Average_Case, Plot_Case ); END_TYPE; (*"Data_From_Simulation_Table" *) TYPE Data_From_Simulation_Table = LIST OF AdaBoolean; END_TYPE; CONSTANT (* should we display some events ? *) display_release_resource : BOOLEAN := false; display_wait_for_resource : BOOLEAN := false; display_allocate_resource : BOOLEAN := true; display_task_activation : BOOLEAN := true; display_address_space_activation : BOOLEAN :=false; display_address_space_completion : BOOLEAN :=false; (* Draw core unit time line if true *) draw_core_unit_time_line : BOOLEAN := true; (* Use several colors to display scheduling *) several_colors_for_time_lines : BOOLEAN := true; (* Draw address space time line if true *) draw_address_space_time_line : BOOLEAN := false; (*"Max_Time_Line_To_Display" Maximum number of time line displayed at simulation. If the number of tasks/messages/buffers/resources in a project is greater that this constant, the user have to choose which object the simulator engine has to display*) Max_Time_Line_To_Display : Natural := 30; (*"Time_Line_Between_Time_Axis" This constant stores the number of time line we draw between each timing axis *) Time_Line_Between_Time_Axis : Natural := 4; (*"Display_Witch_Time_Unit_Label" This constant stores how time unit axis are displayed. The constant give a duration (in time unit) between each time display on the axis*) Display_Witch_Time_Unit_Label : Natural := 5; (*"Max_Time_Line" Maximum number of time line which can de computed All these time line can not be displayed *) Max_Time_Line : Natural := Max_Tasks + Max_Messages + Max_Resources + Max_Buffers + ( Max_Tasks + Max_Messages + Max_Resources + Max_Buffers ) / Time_Line_Between_Time_Axis; (*"Generate_Events" Each item of this boolean table store the user's choose on which event the simulator engine will generate. options tuned by the user AT RUNTIME *) Generate_Events : Time_Unit_Event_Type_Boolean_Table := [ true ]; (* (others => True); *) (*"Schedule_All_Processeurs"should we do simulations on all processors ? options tuned by the user AT RUNTIME*) Schedule_All_Processeurs : BOOLEAN := false; (*"Schedule_And_Display_Event_Table"should we display the event table after simulation ? options tuned by the user AT RUNTIME*) Schedule_And_Display_Event_Table : BOOLEAN := false; (*"Schedule_And_Export_Event_Table"should we save the event table after simulation ? options tuned by the user AT RUNTIME*) Schedule_And_Export_Event_Table : BOOLEAN := false; (*"Schedule_With_Offsets"should we do simulations according to offset ? options tuned by the user AT RUNTIME*) Schedule_With_Offsets : BOOLEAN := true; (*"Schedule_With_Resources"should we do simulations according to shared resources ? options tuned by the user AT RUNTIME*) Schedule_With_Resources : BOOLEAN := true; (*"Schedule_With_Jitters"should we do simulations according to jitters ? options tuned by the user AT RUNTIME*) Schedule_With_Jitters : BOOLEAN := false; (*"Schedule_With_Precedencies"should we do simulations according to task precedencies ? options tuned by the user AT RUNTIME*) Schedule_With_Precedencies : BOOLEAN := true; (*"Schedule_With_Crpd"should we do simulations according to task crpd ? options tuned by the user AT RUNTIME*) Schedule_With_crpd : BOOLEAN := false; (*"Minimize_preemption"try to decrease preemption during simulations. options tuned by the user AT RUNTIME*) minimize_preemption : BOOLEAN := false; (* Default font for the MMI ... should be changed by argument of cheddar.exe *) selected_font : STRING := '' ; (*"Has_Global_Seed"should we use only one seed to all random values generated during simulations ? options tuned by the user AT RUNTIME*) Has_Global_Seed : BOOLEAN := true; (*"Is_Global_Predictable_Seed"should we use seed with a predictable value to be able to do predictable simulation ? options tuned by the user AT RUNTIME *) Is_Global_Predictable_Seed : BOOLEAN := false; (*"Global_Seed_Value"if Has_Global_Seed and Is_Global_Predictable_Seed are True, Global_Seed_Value store the seed. options tuned by the user AT RUNTIME*) Global_Seed_Value : INTEGER := 0; (*"Response_Time_From_Simulation"should we compute, from a simulation worst/best/average/plot cases from response time. options tuned by the user AT RUNTIME *) Response_Time_From_Simulation : Data_From_Simulation_Table := [ ]; (*"Blocking_Time_From_Simulation"should we compute, from a simulation worst/best/average/plot cases from blocking time. options tuned by the user AT RUNTIME *) Blocking_Time_From_Simulation : Data_From_Simulation_Table := [ ]; (*"Context_Switch_From_Simulation" should we compute context switch during the simulation ? options tuned by the user AT RUNTIME*) Context_Switch_From_Simulation : BOOLEAN := true; (*"Preemption_From_Simulation" should we compute preemption during the simulation ? options tuned by the user AT RUNTIME*) Preemption_From_Simulation : BOOLEAN := true; (*"Run_Event_Analyzer_From_Simulation" should we run the event analyser during the simulation ? options tuned by the user AT RUNTIME*) Run_Event_Analyzer_From_Simulation : BOOLEAN := true; END_CONSTANT; END_SCHEMA; SCHEMA AADL_Config; CONSTANT (*"Aadl_Debug" Activate AADL Debug switch *) Aadl_Debug : BOOLEAN := false; (*"Aadl_Import_With_System_Name" Include system/sub-system name in Cheddar's features name *) Aadl_Import_With_System_Name : BOOLEAN := true; (*"Aadl_Import_Event_To_Precedencies" Transform event port to task precedencies *) Aadl_Import_Event_To_Precedencies : BOOLEAN := false; (*"Aadl_Import_Event_Data_To_Precedencies" Transform event port to task precedencies *) Aadl_Import_Event_Data_To_Precedencies : BOOLEAN := false; (*Aadl_Import_Event_To_Buffers_Messages Transform event port to buffers and messages (it automatically includes buffer/message task dependencies) *) Aadl_Import_Event_To_Buffers_Messages : BOOLEAN := true; (*"Aadl_Import_Event_Data_To_Buffers_Messages" Transform event port to buffers and messages (it automatically includes buffer/message task dependencies) *) Aadl_Import_Event_Data_To_Buffers_Messages : BOOLEAN := true; (*"Aadl_Export_Precedencies_To_Event_Data" Transform task precedencies to event data port connexions *) Aadl_Export_Precedencies_To_Event_Data : BOOLEAN := false; (*"Aadl_Export_Precedencies_To_Event" Transform task precedencies to event port connexions *) Aadl_Export_Precedencies_To_Event : BOOLEAN := false; (*"Aadl_Export_Precedencies_To_Properties" Transform task precedencies to a Cheddar property *) Aadl_Export_Precedencies_To_Properties : BOOLEAN := true; (*"Aadl_Process_Second_Import_Pass" Process the second AADL import pass which binds software components to hardware components *) Aadl_Process_Second_Import_Pass : BOOLEAN := true; (*"Aadl_Process_Third_Import_Pass" Process the third AADL import pass which build component relationships (i.e. connections) *) Aadl_Process_Third_Import_Pass : BOOLEAN := true; END_CONSTANT; END_SCHEMA;