-------- Original Message -------- Subject: BOUNCE sv-cc@eda.org: Non-member submission from [Gordon Vreugdenhil <gordonv@model.com>] Date: Thu, 7 Jul 2005 12:45:10 -0700 (PDT) From: owner-sv-cc@eda.org To: sv-cc-approval@eda.org >From owner-sv-cc Thu Jul 7 12:45:07 2005 Received: from relay1.mentorg.com (relay1.mentorg.com [192.94.38.131]) by server.eda.org (8.12.10/8.12.0.Beta7) with ESMTP id j67Jj6I1006086; Thu, 7 Jul 2005 12:45:06 -0700 (PDT) Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1DqcJ0-00034q-00 from gordon_vreugdenhil@mentor.com ; Thu, 07 Jul 2005 12:45:06 -0700 Received: from SVR-ORW-EXC-07.mgc.mentorg.com ([147.34.98.95]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.211); Thu, 7 Jul 2005 12:45:06 -0700 Received: from [147.34.77.152] ([147.34.77.152]) by SVR-ORW-EXC-07.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.211); Thu, 7 Jul 2005 12:45:05 -0700 Message-ID: <42CD8640.4000709@model.com> Date: Thu, 07 Jul 2005 12:45:04 -0700 From: Gordon Vreugdenhil <gordonv@model.com> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Karen Pieper <Karen.Pieper@synopsys.com> CC: sv-champions@server.eda.org, sv-cc@server.eda.org, sv-bc@server.eda.org, sv-ec@server.eda.org, sv-ac@server.eda.org Subject: Re: [sv-bc] Update to Scheduling proposal for reballot issue References: <5.1.0.14.2.20050706172311.017fedd0@pophost.synopsys.com> In-Reply-To: <5.1.0.14.2.20050706172311.017fedd0@pophost.synopsys.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Jul 2005 19:45:05.0982 (UTC) FILETIME=[5FD98DE0:01C5832C] X-Virus-Scanned: ClamAV 0.83/971/Thu Jul 7 03:08:01 2005 on server.eda.org X-Virus-Status: Clean Karen Pieper wrote: > Hi, all, > > A new proposal for Mantis issue 794 (event scheduling) has been > uploaded in response to feedback we have received on the original > proposal. Please review and offer feedback if you have any. > We will be voting on this issue and the others in the reballot > spreadsheet in Friday's Champions meeting. With respect to the new scheduling section (Mantis 794), the diagram is fine, but I don't think the pseudocode is correct (i.e. consistent with the diagram). Here is what is in the proposal: ------------------- execute_time_slot { execute_region (preponed); execute_region (pre-active); <1> while (any region in [active ... pre-postponed] is non-empty) { while (any region in [active ... post-observed] is non-empty) { execute_region (active); R = first non-empty region in [active ... post-observed]; if (R is non-empty) move events in R to the active region; } while (any region in [reactive ... re-inactive] is non-empty) { execute_region (reactive); R = first non-empty region in [reactive ... re-inactive]; if (R is non-empty) move events in R to the reactive region; } if (pre-postponed is non-empty) execute_region (pre-postponed); } execute_region (postponed); } ------------------- Note that we don't get back to <1> without doing the pre-postponed (if there is anything there). So any cbAtEndOfSimTime happens before the loop back. That isn't what is intended by the diagram. Here are two corrected variants of the pseudocode: ------------------- Variant 1 ------------------- execute_time_slot { execute_region (preponed); execute_region (pre-active); while (any region in [active ... pre-postponed] is non-empty) { while (any region in [active ... re-inactive] is non-empty) { while (any region in [active ... post-observed] is non-empty) { execute_region (active); R = first non-empty region in [active ... post-observed]; if (R is non-empty) move events in R to the active region; } while (any region in [reactive ... re-inactive] is non-empty) { execute_region (reactive); R = first non-empty region in [reactive ... re-inactive]; if (R is non-empty) move events in R to the reactive region; } } execute_region (pre-postponed); } execute_region (postponed); } ------------------- Variant 2 ------------------- execute_time_slot { execute_region (preponed); execute_region (pre-active); while (any region in [active ... pre-postponed] is non-empty) { while (any region in [active ... post-observed] is non-empty) { execute_region (active); R = first non-empty region in [active ... post-observed]; if (R is non-empty) move events in R to the active region; } while (any region in [reactive ... re-inactive] is non-empty) { didReactive = TRUE; execute_region (reactive); R = first non-empty region in [reactive ... re-inactive]; if (R is non-empty) move events in R to the reactive region; } if (all regions in [active ... re-inactive] are empty) execute_region (pre-postponed); } execute_region (postponed); } ------------------- The triple loop form (Variant 1) is probably preferable, but either form is acceptable. Gord. -- -------------------------------------------------------------------- Gordon Vreugdenhil, Staff Engineer 503-685-0808 Model Technology (Mentor Graphics) gordonv@model.com -- Charles Dawson Senior Engineering Manager NC-Verilog Team Cadence Design Systems, Inc. 270 Billerica Road Chelmsford, MA 01824 (978) 262 - 6273 chas@cadence.comReceived on Thu Jul 7 12:47:20 2005
This archive was generated by hypermail 2.1.8 : Thu Jul 07 2005 - 12:47:38 PDT