(1) Implement the SystemC module, HW_Quant, to model the hardware block for quantize function (2) Implement a new hierarchical top level module, named System, defined in System.h, that instantiates the CPU and HW_Quant modules and connects them using abstract FIFO channels and interrupt signals. You must bind the appropriate ports in the CPU and HW modules to the FIFOs and interrupt signals. (3) Implement the inter-process communication (IPC) channel 'os_sem' that models a counting semaphore in the OS model. The channel is defined in ‘os.h’ and it dervices from built-in SystemC channel sc_semaphore. The channel os_sem overwrites two functions of sc_semaphore, namely wait and post. The wait method is called by user tasks to wait for interrupts from the hardware component, HW_Quant. The post method is used by ISRs to wake up waiting user tasks. (4) The time_wait function in the OS model should be updated to reflect a truly preemptive kernel, in the presence of external events, such as interrupts. The new SystemC event preemption in the OS model should be used to notify preemptions and consequently interrupt running tasks. (5) ISRs must be modeled as SC_METHODS that are sensitive to relevant interrupt events.